假设我有以下表结构 countries
, products
和suppliers
:
countries
------------------------
id
name
code
product
------------------------
id
name
price
suppliers
------------------------
id
name
一个product
可以以不同的方式出售countries
但是supplier
其中product
可以不同。考虑到这一点,我做了一个 relations
用于跟踪哪个 supplier
的表正在交付 product
其中country
:
relations
------------------------
country_id
product_id
supplier_id
假设我有一个产品 A
我需要将其存储在国家/地区 US
和CA
但这些国家的供应商是X
和Y
分别。结构看起来像这样:
countries
-------------------------------
id | name | code
-------------------------------
1 | United States | US
2 | Canada | CA
product
-------------------------------
id | name | price
-------------------------------
1 | A | 3.99
suppliers
------------
id | name
------------
1 | X
2 | Y
relations
-------------------------------
country_id | product_id | supplier_id
-------------------------------
1 | 1 | 1
2 | 1 | 2
我的问题是如何使用此表的 Eloquent 关系,因为多对多关系仅适用于两个表。对此还有其他解决方法吗?或者还有其他有效的方法来实现这个场景吗?
感谢您的帮助。
最佳答案
没有内置方法可以使用三个表建立关系。每当我自己遇到类似的事情时,最好的解决方案似乎是制作一个与三个表有关系的中间模型。
因此,在您的情况下,我将创建一个具有以下关系的 SupplierProduct
:country
、supplier
和 product
.
关于Laravel Eloquent 三个模型之间的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59152763/