【问题标题】:Calling Laravel Controller-function from within custom artisan-command -> unknown database从自定义 artisan-command -> 未知数据库中调用 Laravel 控制器功能
【发布时间】:2014-10-06 16:42:42
【问题描述】:

我创建了一个自定义 artisan-command,以便通过命令行调用控制器功能(不带 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>

但随后返回此错误:

[PDO异常] SQLSTATE[HY000] [1049] 未知数据库 'appdatabase'

我该怎么办?

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    无法直接调用该函数的原因是您永远不应该从您的工匠命令中调用控制器函数。

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

    【讨论】:

    • 我明白了,但这会给我所需的数据库访问权限吗?
    • 取决于您如何配置应用程序。调用 artisan 命令时 - 您可以使用 --env 命令专门选择要使用的环境,从而选择要连接的数据库
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-09
      • 1970-01-01
      • 2015-12-08
      • 2020-01-07
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      相关资源
      最近更新 更多