有这3个表:
post - user
关系表示用户正在关注帖子。
列出帖子的最简单方法是:
$posts= Posts::all();
foreach ($posts as $post)
{
var_dump($post->title);
}
但是在列出帖子时,我还想查询当前用户(比如user_id = 5)是否跟随每个帖子。
因此,对于每篇帖子,我都会post_id
,title
,...,is_following [0 or 1]
。
我可以使用简单的SQL来做到这一点,但这可以用Eloquent方式完成吗?
答案 0 :(得分:2)
假设您使用Post
在User
模型上定义了User
/ hasMany('Post')
关系,您可以检查当前Post
是否在用户使用contains()
跟踪帖子:
$followed_posts = $current_user->posts();
if ($followed_posts->contains($current_post->id))
{
// This Post is being followed by the User
// .... Do something .... :)
}
答案 1 :(得分:1)
也许尝试急切加载用户,然后为每个帖子循环浏览该帖子后面的用户,寻找用户ID。
$posts = Post::with('users')->get();
foreach($posts as $post) {
echo $post->title;
foreach($post->users as $user) {
if($user->id == $user_id) {
echo 'User with id of '.$user_id.' is following this post.';
break;
}
}
}