Laravel Eloquent 多对多查询 whereIn

新手上路,请多包涵

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

假设我有两个相关表,例如 dogs 和 owners。如果我有一群主人,并且我想为这些主人获取狗的 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

原文由 Angelin Calu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 646
2 个回答

使用 whereHas() 方法:

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

原文由 Alexey Mezenin 发布,翻译遵循 CC BY-SA 3.0 许可协议

我尝试了两个建议的解决方案,但收到一条错误消息,指出 id 不是唯一的。我这样解决了:

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

原文由 Davide Casiraghi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏