Laravel:在 2 个模型之间有 2 个数据透视表是可能的吗?

Posted

技术标签:

【中文标题】Laravel:在 2 个模型之间有 2 个数据透视表是可能的吗?【英文标题】:Laravel: Is having 2 pivot tables between 2 models possible? 【发布时间】:2019-07-01 12:21:39 【问题描述】:

在我的项目中,我有 2 个模型:

交易

身份证 action_id user_id

物品

身份证 姓名 说明

操作:'deliver'、'order'、'used'、'spoiled'

数据透视表::item_order、item_transaction

这就是我想要实现的目标

有一个事务表来记录对项目所做的操作 如果 action 是“order”,那么它会将请求表单保存到 item_order 数据透视表中, 否则,如果操作是“交付”、“使用”或“损坏”,它将记录到“item_transaction”数据透视表。

我知道我可以创建另一个名为“订单”的表,但它会破坏只有一个“事务”表以便更轻松地监控对项目执行的操作的目的。

两个模型之间可以有两个不同的数据透视表吗?我将如何建立这种关系?

这是我的图片的链接 Database Structure

【问题讨论】:

将字段order_qty 放入表item_transaction 并将其设置为可为空。仅当操作为order 时才填写。删除表item_order 谢谢!我会这样做是为了让事情变得更简单???? 【参考方案1】:

根据评论中的建议,您的 item_transactionactionstransactions 行相关联。由于它只能是一种操作 (transactions 1:m actions) 解决方案可能是将order_qty 字段设置为item_transaction 表中的可空字段并完全删除item_order 表。将null 放在那里,它也可以作为标记,无论操作是订购其他东西。

【讨论】:

以上是关于Laravel:在 2 个模型之间有 2 个数据透视表是可能的吗?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1 中 3 个模型之间的关系(“像多对多通过”)

在 2 个 laravel 应用程序之间共享会话

使用 laravel 将数据保存在 2 个不同的表中

1 个函数模型 Laravel 中的 2 个序列查询更新

如何在 laravel 中创建 3 个模型之间的关系?

同一模型 Laravel 上的 2 个查询