Observer 不能在 Command 中工作,而是在 Controller 中工作

Observer does not work from Command but inside Controller

我在 Laravel 中使用 Observers 来为属性添加默认值。

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

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

Illuminate\Database\QueryException SQLSTATE[HY000]: General error: 1364 Field 'company_id' doesn't have a default value

如何让 Observers 从命令行工作?

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