让每个 post 的用户都喜欢
Get user like for each post
我有一个功能可以让用户 "like" 一个 post(类似于 Facebook)。当我检索 post(或多个 post)时,我需要在该查询中包含有关用户是否喜欢 post.
的数据
在我的 Post.php
模型中,我有以下关系:
public function likes()
{
return $this->hasMany('App\Like');
}
现在,显然,如果我执行以下查询,它将从 all 用户中检索 all 赞,而不仅仅是用户登录:
$posts = Post::with('likes')
->get();
所以我的问题是,我如何创建一个关系(可能称为 userLike()
)首先检查用户是否登录,然后为每个 post 检索类似的记录?
谢谢!
我假设 likes
个表有 user_id
。在这种情况下,您可以像这样使用 eager loading constraint:
$posts = Post::with([['likes' => function ($q) {
$q->where('user_id', auth()->id());
}])->get();
或者,您可以使用 where
子句创建关系:
public function userLikes()
{
return $this->hasMany(Like::class)->where('user_id', auth()->id());
}
然后使用它:
Post::with('userLikes')->get();
我有一个功能可以让用户 "like" 一个 post(类似于 Facebook)。当我检索 post(或多个 post)时,我需要在该查询中包含有关用户是否喜欢 post.
的数据在我的 Post.php
模型中,我有以下关系:
public function likes()
{
return $this->hasMany('App\Like');
}
现在,显然,如果我执行以下查询,它将从 all 用户中检索 all 赞,而不仅仅是用户登录:
$posts = Post::with('likes')
->get();
所以我的问题是,我如何创建一个关系(可能称为 userLike()
)首先检查用户是否登录,然后为每个 post 检索类似的记录?
谢谢!
我假设 likes
个表有 user_id
。在这种情况下,您可以像这样使用 eager loading constraint:
$posts = Post::with([['likes' => function ($q) {
$q->where('user_id', auth()->id());
}])->get();
或者,您可以使用 where
子句创建关系:
public function userLikes()
{
return $this->hasMany(Like::class)->where('user_id', auth()->id());
}
然后使用它:
Post::with('userLikes')->get();