Laravel / Eloquent / Query builder使用多对多关系时如何从另一个表中获取所有书籍

时间:2018-07-10 21:23:45

标签: php mysql laravel laravel-5 eloquent

让我解释一下情况。

我有桌子:

competitions

id title body

然后

books

id name user_id

然后我有一个数据透视表来存储participants

如此

participants

id competition_id user_id

现在我已经为这些模型设置了一些关系。

Competition模型

 public function participants()
    {
        return $this->belongsToMany('App\User');
    }

User模型

 public function participatedCompetitions()
    {
        return $this->belongsToMany('App\Competition');
    }

现在,我正在获取一个竞赛,在同一查询中,我需要获取该竞赛参与者的书籍清单。 所以我怎么能做到这一点。 谢谢。

1 个答案:

答案 0 :(得分:0)

这是您获取所有书籍的方式:

$userIds = $competition->participant()->get()->pluck('id');
// $userIds is your collection of User Ids that is participant in that compititions.
$books = Book::whereIn('user_id',$userIds)->get();