在Laravel app中发射模型事件

时间:2016-07-09 18:09:16

标签: php laravel eloquent

我正试图让'已保存'事件在模型上触发。我以为我有它的工作,这在某种程度上。我正在听3个不同的模型,它只在一个模型上工作。我的代码中的“属性”模型如下。有什么理由说它只能在一个上工作,为什么在那一个上工作?

append/2

}

2 个答案:

答案 0 :(得分:1)

类似

    use \App\Clients\ClientMeta;

    class Attribute extends Model
    {

    protected $fillable = [...];

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

      static::saved(function ($attribute) {
            $meta = ClientMeta::firstOrCreate(['client_id' => $attribute->mem_id, 'meta_name' => 'profile_updated']);
            $meta->meta_value = time();
            $meta->save();
        });

    }

答案 1 :(得分:1)

您需要将parent::boot()static添加到方法名称

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

        ...

确保 您正在使用基于CRUD方法的正确模型事件:

  

事件,根据Laravel

     

Eloquent模型可以激活几个事件,让您可以连接各种事件   使用以下方法指出模型的生命周期:创建,   创建,更新,更新,保存,保存,删除,删除,   恢复,恢复。事件允许您每次轻松执行代码   在数据库中保存或更新特定的模型类。

例如,当您更新模型时,您可能希望执行以下操作:

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

        static::updated(function ($attribute) { ... }

请注意,您还应该将此添加到每个模型,而不是应用提供商。