Laravel在特征引导期间设置/修改Model属性

时间:2016-03-10 02:33:06

标签: php laravel laravel-5 laravel-5.1 laravel-5.2

trait的boot方法是否可以设置或修改Model的属性?以下非工作示例说明了我的目标:

trait MyTrait {

    public static function bootMyTrait(){
        static::creating(function(Model $item){
            $item->foo = 'foo';
        });
    }
}

2 个答案:

答案 0 :(得分:1)

我知道这种威胁已经很老了,但这个答案适合那些仍然需要知道的人:

在你的trait中设置一个名为boot [YourTraitName]的静态方法。

trait MyTrait {
    public static function bootMyTrait(){
        static::saved(function(){ /*...*/ });
    }
}

您的模型将触发自己的引导方法和特征中声明的引导方法。

答案 1 :(得分:0)

如果您要在创建过程中自动设置/修改属性值,则可以覆盖模型的boot方法

trait MyTrait {
   protected static function boot()
   {
      parent::boot();
      static::creating(function($model){
         $model->foo = 'foo';
      });
    }
}