Laravel 5 - 在将资源的所有投票作为关系返回时,检查用户是否已经“投票”

时间:2016-11-09 23:20:14

标签: php laravel laravel-5.3

我正在为我正在制作的链接共享网站制作投票系统。

当用户对链接进行投票时,新行将添加到具有链接ID和用户ID的数据库中。

在我的控制器中显示这些链接时,我称之为关系(投票):

$links = Link::orderBy('created_at', 'desc')->with('votes')->paginate(20);

模型中的关系

public function votes()
{
    return $this->hasMany('\App\LinkVote');
}

在我看来,我在$ links上运行foreach来显示每个。我的目的是在用户已经投票选择该链接时显示一个不同的按钮。

当dd'ing $ link->投票时,我得到:

enter image description here

如何检查(在我的视图和foreach中)当前登录的用户是否在该投票数组中?

1 个答案:

答案 0 :(得分:5)

您可以尝试contains()

$link->votes->contains('user_id', auth()->user()->id);

where()count()

if ($link->votes->where('user_id', auth()->user()->id)->count()) {