提问者:小点点

Laravel 4-找出两个模型之间是否存在M:N关系


我有两个模型,一个是轮询,另一个是用户。我在他们两个之间建立了M: N关系:

使用者php

public function votedPolls() {
    return $this->belongsToMany('Polls', 'votes');
}

Poll.php

public function voters() {
    return $this->belongsToMany('User', 'votes');
}

这一切都很好。当我对投票进行投票时,表投票将被正确填充。但是现在我想检查控制器内部是否有用户已经在投票中投票。

我想应该是这样的,但我不确定语法。我试过这个(不起作用):

$voters = $poll->voters()->where('id', '=', $user->id)->first();
$voted = count($voters) == 1;

我怎样才能做到这一点?


共1个答案

匿名用户

count是检查是否存在关系的首选方法。

您的代码不起作用,因为透视表还有id列和where子句不明确,所以将其更改为:

where('users.id','=',$user->id)