【问题标题】:Observer does not work from Command but inside Controller观察者不能在命令中工作,而是在控制器内部
【发布时间】:2020-05-26 02:48:59
【问题描述】:

我在 Laravel 中使用观察者为属性添加默认值。

public function creating($model)
{
    if (!$model->company_id) $model->company_id = (Auth::check()) ? Auth::user()->company_id : null;
}

这适用于每个控制器。但是如果我在app\Console\Commands\ 中创建一个自定义命令。我收到一个错误:

照亮\数据库\查询异常 SQLSTATE[HY000]:一般错误:1364 字段 'company_id' 没有默认值

如何让 Observers 从命令行工作?

【问题讨论】:

  • Auth 在命令行中不存在,它是 http 中间件,因此您的 company_id 将始终为空。错误是从您的数据库发出的,因为它是空的并且没有默认值(并且可能不可为空)。
  • 谢谢@DarrylE.Clarke!如果您将此作为答案发布,我会接受。

标签: laravel laravel-5 laravel-artisan


【解决方案1】:

Auth 在命令行中不存在,它是 http 中间件,因此您的 company_id 将始终为空。错误是从您的数据库发出的,因为它是空的并且没有默认值(并且可能不可为空)

【讨论】:

    猜你喜欢
    • 2014-03-24
    • 1970-01-01
    • 2018-12-11
    • 2021-08-26
    • 2011-04-14
    • 2013-01-30
    • 2017-12-04
    • 1970-01-01
    • 2015-02-14
    相关资源
    最近更新 更多