Laravel Eloquent 多对多查询 whereIn
Laravel Eloquent Many-to-Many query whereIn
在我的应用程序中,我已将关系从 one-to-many
更新为 many-to-many
,并且我正在尝试找出一种方法来保留关联的功能。
假设我有两个相关表,例如狗和主人。如果我有一组主人,并且我正在尝试获取这些主人的狗 ID 列表,我应该如何雄辩地做到这一点?
这里有人提出了类似的问题:
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
.
尝试
$associateDogs = Dog::with(['owners' => function($query) use ($listOfOwners) {
$query->whereIn('id', $listOfOwners);
}])->get();
使用whereHas()
方法:
$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
$q->whereIn('id', $ownerIds);
})->get();
我尝试了两个建议的解决方案,但收到一条错误消息,指出 id 不是唯一的。
我是这样解决的:
$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
$q->whereIn('owner_id', $ownerIds);
})->get();
在我的应用程序中,我已将关系从 one-to-many
更新为 many-to-many
,并且我正在尝试找出一种方法来保留关联的功能。
假设我有两个相关表,例如狗和主人。如果我有一组主人,并且我正在尝试获取这些主人的狗 ID 列表,我应该如何雄辩地做到这一点?
这里有人提出了类似的问题: 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
.
尝试
$associateDogs = Dog::with(['owners' => function($query) use ($listOfOwners) {
$query->whereIn('id', $listOfOwners);
}])->get();
使用whereHas()
方法:
$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
$q->whereIn('id', $ownerIds);
})->get();
我尝试了两个建议的解决方案,但收到一条错误消息,指出 id 不是唯一的。 我是这样解决的:
$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
$q->whereIn('owner_id', $ownerIds);
})->get();