雄辩的模型启动事件从未触发

时间:2020-06-06 08:51:09

标签: php laravel laravel-7

我无法启动模型启动事件。这是最基本的口才功能,所以我确定这可能是我在这里搞砸的简单事情。

当我运行此代码时:

User::create(['email'=>'test@example.com']);

或此代码:

(new User)->fill(['email'=>'test@example.com'])->save();

然后,我希望saving事件方法在模型中被触发,但是永远不会:

class User extends Authenticatable
{
    use HasImage;

    protected $guarded = [];

    public static function boot()
    {
        parent::boot();

        static::saving(function (User $user) {
            dd('user saving is never triggered');
        });
    }
}

是的,这正是我正在使用的代码。没有比这更基本的了。

如果我添加模型特征,它们也不会执行它们的启动事件,但是bootHasImage仍称为:

trait HasImage
{
    protected static function bootHasImage()
    {
        dd('this will be hit on boot');

        static::saved(function (self $model) {
            dd('this is never hit on model save');
        });
    }
}

要使该特质saved事件起作用,我还必须将其直接移至UserObserver

这可能是怎么回事?

1 个答案:

答案 0 :(得分:0)

如果要使用大量可分配属性,请记住在用户模型上设置$ fillable选项。

 protected $fillable = [
        'email'       
    ];