trait的boot方法是否可以设置或修改Model的属性?以下非工作示例说明了我的目标:
trait MyTrait {
public static function bootMyTrait(){
static::creating(function(Model $item){
$item->foo = 'foo';
});
}
}
答案 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';
});
}
}