让每个 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();