将经过身份验证的用户添加到相关模型的最佳方法是什么?
What is the best way to add the authenticated user to a related model?
将经过身份验证的用户添加到相关模型的最佳方法是什么?
如果我想在创建新 post 模型时将经过身份验证的用户添加为作者,最好的方法是什么?
目前,我有以下的工作,但它运行一个额外的查询(即 1. 创建 post。2. 用 author_id 更新 post)。
public function store(Request $request)
{
$post = Post::create($request->all());
$post→author()->associate($request->user());
$post→save();
return new PostResource($post);
}
一定有更好的方法来做到这一点。我正在考虑使用 $post-author_id = $request→user()→id
手动添加所有属性,然后调用 $post-save()
。但是,我不喜欢必须手动写出 post 的所有其他属性的想法。
我考虑的另一个选择是在 Post 创建事件上创建一个事件侦听器。我不知道这是否会减少额外查询的需要。
最简单的解决方案是什么?
也许你可以在相关型号上考虑一下:
/**
* Save auth user on create
*/
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
$userID = auth()->id();
$model->author_id = $userID;
});
}
您可以简单地创建一个新的 PostResource
实例并用 author_id
填充它,而不是使用 create
方法。所以这将是一个捆绑查询。
public function store(Request $request) {
$post = new Post($request->all());
$post->author_id = Auth::user()->id;
$post->save();
return new PostResource($post);
}
希望对您有所帮助。
将经过身份验证的用户添加到相关模型的最佳方法是什么?
如果我想在创建新 post 模型时将经过身份验证的用户添加为作者,最好的方法是什么?
目前,我有以下的工作,但它运行一个额外的查询(即 1. 创建 post。2. 用 author_id 更新 post)。
public function store(Request $request)
{
$post = Post::create($request->all());
$post→author()->associate($request->user());
$post→save();
return new PostResource($post);
}
一定有更好的方法来做到这一点。我正在考虑使用 $post-author_id = $request→user()→id
手动添加所有属性,然后调用 $post-save()
。但是,我不喜欢必须手动写出 post 的所有其他属性的想法。
我考虑的另一个选择是在 Post 创建事件上创建一个事件侦听器。我不知道这是否会减少额外查询的需要。
最简单的解决方案是什么?
也许你可以在相关型号上考虑一下:
/**
* Save auth user on create
*/
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
$userID = auth()->id();
$model->author_id = $userID;
});
}
您可以简单地创建一个新的 PostResource
实例并用 author_id
填充它,而不是使用 create
方法。所以这将是一个捆绑查询。
public function store(Request $request) {
$post = new Post($request->all());
$post->author_id = Auth::user()->id;
$post->save();
return new PostResource($post);
}
希望对您有所帮助。