在我的应用程序中,我更新了从one-to-many
到many-to-many
的关系,我正试图找到一种方法来保留相关的功能。
假设我有两个相关的表,例如狗和主人。如果我拥有一系列所有者,并且我正在尝试为这些所有者获取狗的名单,我该如何雄辩地做到这一点?
那么,我如何获得Dog
模型中Owner
所在的模型?
$associatedDogs = Dog::whereIn('owner_id',$ListOfOwners)->get();
与One-To-Many
关系相同,但对于Many-to-Many
。
答案 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();