我创建了一个自定义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;
我该怎么办?
答案 0 :(得分:2)
无法直接调用该函数的原因是因为你永远不应该从artisan命令调用控制器函数。
你应该将控制器的函数重构为它自己的类+函数,然后从你的控制器或你的工匠命令调用那个类+函数。
答案 1 :(得分:1)
这里的问题是错误的数据库配置。由于某些原因,php artisan需要在数据库配置的主机名中使用MySQL服务器的端口号。 Web应用程序本身仅在不指定端口号的情况下工作。
由于这是一个更普遍的问题,我提出了另一个问题。 Artisan-commands need different hostname in db-config than Laravel itself
感谢有关网络应用程序结构的反馈。