Laravel Eloquent 三个模型之间的多对多关系

标签 laravel eloquent eloquent-relationship

假设我有以下表结构 countries , productssuppliers :

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我需要将其存储在国家/地区 USCA但这些国家的供应商是XY分别。结构看起来像这样:

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:countrysupplierproduct .

关于Laravel Eloquent 三个模型之间的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59152763/

相关文章:

php - Laravel Faker 工厂关系

laravel - 如何限制 whereHas 只匹配 where 条件?

laravel eloquent-在嵌套的渴望加载关系上不使用

javascript - Laravel 5.4 将变量从 Controller 传递到 js 脚本

mysql - Laravel 根据指定的类有条件地连接表

php - Laravel中的前端错误显示架构

Laravel:保存/附加/同步自定义枢轴模型(belongsToMany)

php - 自定义 Stripe 按钮不会触发 POST 方法

php - Laravel 5.4 忽略 $fillable

php - Laravel 5.2 中的 Mysql 高级联接