在我的应用程序中,我将一个关系从一对多
更新为多对多
,现在我正在尝试找到一种方法来保留相关的功能。
假设我有两个相关的表,比如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();
相同的方式适用于一对多
关系,但适用于多对多
。
whereHas
还是with
?在这种情况下它们之间有什么区别吗?它们是否真的有任何区别? - Angelin Caluwith()
对你来说不起作用,因为它会加载关联数据。 - Alexey Mezeninwith
方法,因为我所读到的内容。所以如果我理解正确的话,它可能也会起作用,但是它将急切地加载与dog
相关联的owner
。 - Angelin Caluwith()
不会起作用。它会加载所有的狗和筛选出的主人。whereHas()
只会加载列表中有主人的狗。尝试一下两种方法,你就会看到区别了。 - Alexey Mezenin