Laravel Eloquent多对多查询whereIn

时间:2017-03-09 09:25:11

标签: laravel many-to-many laravel-eloquent

在我的应用程序中,我更新了从one-to-manymany-to-many的关系,我正试图找到一种方法来保留相关的功能。

假设我有两个相关的表,例如狗和主人。如果我拥有一系列所有者,并且我正在尝试为这些所有者获取狗的名单,我该如何雄辩地做到这一点?

此处提出类似问题: https://laracasts.com/discuss/channels/laravel/getting-many-to-many-related-data-for-an-array-of-elements

那么,我如何获得Dog模型中Owner所在的模型?

$associatedDogs = Dog::whereIn('owner_id',$ListOfOwners)->get();One-To-Many关系相同,但对于Many-to-Many

3 个答案:

答案 0 :(得分:24)

使用whereHas()方法:

$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
    $q->whereIn('id', $ownerIds);
})->get();

答案 1 :(得分:1)

尝试

$associateDogs = Dog::with(['owners' => function($query) use ($listOfOwners) {
    $query->whereIn('id', $listOfOwners);
}])->get();

答案 2 :(得分:1)

我尝试了两种建议的解决方案,但出现错误,指出 id 不是唯一的。 我是这样解决的:

$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
    $q->whereIn('owner_id', $ownerIds);
})->get();