【问题标题】:Laravel 5.5 many to many relationship with an intermediate tableLaravel 5.5 与中间表的多对多关系
【发布时间】:2018-02-09 08:43:31
【问题描述】:

请帮忙,

我在 ITEMS, SUPPLIERS and PURCHASE_ORDERS 之间的 laravel 中有这些关系

由于ITEMSSUPPLIERS 有多对多关系,我在它们之间创建了一个中间表,称为ITEM_SUPPLIER

现在我需要在PURCHASE_ORDERS 和中间表ITEM_SUPPLIER 之间建立多对多关系。

我如何建立这种关系? 我应该在它们之间创建一个中间表吗,最好的命名方式是什么?

【问题讨论】:

  • 你检查答案了吗?
  • 对不起,我刚刚有时间继续我的项目。我现在可以工作了,感谢您的详细解释!

标签: laravel eloquent many-to-many


【解决方案1】:

为数据透视表 ItemSupplier 添加一个模型,其中有一个额外的列 id 扩展了 Pivot

use Illuminate\Database\Eloquent\Relations\Pivot;

class ItemSupplier extends Pivot
{

    public function purchaseOrder()
    {
       return $this->belongsToMany(PURCHASE_ORDERS::class, item_supplier_purchase_order);
    }

}

如您所见,您需要创建一个新的item_supplier_purchase_order 数据透视表并添加关系

class PURCHASE_ORDERS extends Model
{

    public function purchaseOrder()
    {
       return $this->belongsToMany(ItemSupplier::class, item_supplier_purchase_order);
    }

}

【讨论】:

    【解决方案2】:

    id 列添加到item_supplier 并为数据透视表创建ItemSupplier 模型。然后在ItemSupplierPurchaseOrder 模型之间创建一个新的item_supplier_purchase_order 数据透视表和两个belongsToMany() 关系。

    另外,当从item_supplier 数据透视表中删除相关记录时,不要忘记使用cascade deleting 从新数据透视表中删除记录。

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 2018-08-13
      • 2018-10-05
      • 2021-11-12
      • 1970-01-01
      • 2019-10-16
      • 2019-02-02
      • 2017-06-21
      • 1970-01-01
      相关资源
      最近更新 更多