我有一个Post
模型,其中setAuthorIdAttribute
方法用于设置发布作者ID以及已登录用户的ID。
class Post extends Model
{
protected $fillable = ['title', 'subtitle', 'slug', 'content', 'draft', 'author_id', 'category_id'];
/**
* An post belongs to an author
*/
public function author()
{
return $this->belongsTo('App\User');
}
// Some code here...
/**
* Add the author of the post
*/
public function setAuthorIdAttribute($value)
{
return $this->attributes['author_id'] = Auth::id();
}
}
我用这个创建我的Post
:
public function store(Request $request)
{
$post = Post::create($request->all());
return redirect()->route('posts.show', ["post" => $post]);
}
当我在dd()
内放置setAuthorIdAttribute
时,没有任何事情发生。为什么?
答案 0 :(得分:2)
您可以使用模型引导方法在模型中设置属性值,如:
public function boot()
{
Model::creating(function ($model)
return $model->attributes['author_id'] = Auth::id();
});
Model::updating(function ($model)
return $model->attributes['author_id'] = Auth::id();
});
}
这将在此模型的每次创建和更新事件中使用author_id
填充Auth::id()
属性。