Laravel中如何保存带有两个关联关系的模型?
如何给评论关联用户?
首先要确保你的模型关联已经正确定义:
- 在User模型中添加评论关联:
public function comments() { return $this->hasMany(Comment::class); }
- 在Comment模型中添加用户关联:
public function user() { return $this->belongsTo(User::class); }
接下来有几种简洁的实现方式:
方式一:创建评论时直接传入user_id
利用当前登录用户的ID,把它加入到验证通过的数组中,create方法会自动处理关联:
$post = Post::find(1); // 把当前用户ID加入验证数据 $validated['user_id'] = auth()->id(); $comment = $post->comments()->create($validated);
方式二:通过用户实例创建评论
如果已经持有用户实例(比如登录用户),可以直接通过用户的关联方法创建评论,同时指定post_id:
$post = Post::find(1); $user = auth()->user(); $comment = $user->comments()->create([ ...$validated, 'post_id' => $post->id ]);
方式三:先创建评论再关联用户(不推荐)
这种方式会多一次数据库操作,仅在特殊场景下使用:
$post = Post::find(1); $comment = $post->comments()->create($validated); // 关联用户并保存 $comment->user()->associate(auth()->user()); $comment->save();
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

