我想在laravel中保存模型时在数据库中保存其他记录,我的模型如下:
class Document extends Model
{
use DocumentSetup;
}
我的特质看起来像:
trait DocumentSetup {
protected static function boot()
{
static::saving(function ($model) {
$documentSetup = new DocumentSetup();
$documentSetup->document_id = $model->id;
$documentSetup->is_public = false;
$documentSetup->need_verification = true;
$documentSetup->save();
});
parent::boot();
}
}
如果我尝试没有任何错误,但是未创建文档或文档设置,那么有人知道我在做什么错吗?
我的想法是在保存时创建此附加模型...
答案 0 :(得分:2)
在对Eloquent生命周期挂钩使用特征时,必须在案例boot[traitName]
中命名引导方法bootDocumentSetup
。您还应该删除特征中的parent::boot()
调用,因为没有此类父调用。如果这样命名,它将起作用。
这是为了避免在模型中使用一个或多个特性时发生冲突,每个特性都有其自己的引导方法。