最近我在使用特征时遇到了问题,我以前创建了一些特征,似乎可以使用,但是现在我又创建了一个特征来对创建事件进行操作,就是这样
trait Contributes
{
public static function bootContributes()
{
static::creating(function ($model) {
if (!$model->getKey())
{
Contribution::create([
'contributing_id' => $model->id,
'contributing_type' => $model->class_table,
]);
}
});
}
}
并且我将其包含在多个模型中,例如use Contributes;
,我认为我对此一无所知。
我在特征中尝试了dd($model);
,它在事件外部有效,但在事件内部无效
答案 0 :(得分:0)
为什么命名函数bootContributes()
? Laravel不知道必须执行这种方法。
在您的特征中使用它:
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
if (!$model->getKey())
{
Contribution::create([
'contributing_id' => $model->id,
'contributing_type' => $model->class_table,
]);
}
});
}
}
答案 1 :(得分:0)
代替上述方法,我认为这是一种更好的做法,并且与laravel一起使用时效果更好:
public static function boot()
{
self::created(
function($model)
{
Contribution::create([
'contributing_id' => $model->id,
'contributing_type' => $model->table
]);
}
);
}