从自定义artisan命令中调用Laravel Controller-function - >未知数据库

时间:2014-08-13 10:49:07

标签: php laravel laravel-4

我创建了一个自定义artisan命令,以便通过命令行调用控制器函数(没有curl)。 由于在Laravel 4中似乎没有办法直接调用函数,我发送了这样的请求:

public function fire()
{
    $request = Request::create('insert', 'GET', array());
    Route::dispatch($request)->getContent();
}

当我通过命令行调用命令时,它开始显示控制器函数输出的HTML内容:

php artisan myApp:customCommand
<h1>Insert into Database</h1>
<pre>

然后返回此错误:

  

[PDOException]     SQLSTATE [HY000] [1049]未知数据库&#39; appdatabase&#39;

我该怎么办?

2 个答案:

答案 0 :(得分:2)

无法直接调用该函数的原因是因为你永远不应该从artisan命令调用控制器函数。

你应该将控制器的函数重构为它自己的类+函数,然后从你的控制器或你的工匠命令调用那个类+函数。

答案 1 :(得分:1)

这里的问题是错误的数据库配置。由于某些原因,php artisan需要在数据库配置的主机名中使用MySQL服务器的端口号。 Web应用程序本身仅在不指定端口号的情况下工作。

由于这是一个更普遍的问题,我提出了另一个问题。 Artisan-commands need different hostname in db-config than Laravel itself

感谢有关网络应用程序结构的反馈。