belongsToMany的倒数

问题描述 投票:0回答:1

我有两个模型。

  • Order
  • Invoice

每个 Order 可以有很多 Invoices - 和一个 Invoice 可属于多个 Orders.

所以我可以搜索一个 Order 并检查。"喂,哪个 Invoices 已为此设立了 Order?"

反过来说,每个人 Invoice 可以属于 多重 Order的,因为可能一个客户在同一天订购了两个产品,所以他只得到一个产品就很好了。Invoice,其中包括两个订单。

所以我是这样做的。

Invoice

public function orders()
{
    return $this->belongsToMany(Order::class);
}

Order

public function invoices()
{
    return $this->belongsToMany(Invoice::class, 'invoice_order');
}

这样做确实可以,但是把表改成中间表似乎不对。invoice_order 在这里,你有什么想法吗?你有什么想法吗:-)

提前感谢您的想法:-)

laravel eloquent
1个回答
1
投票

将关系分离到一个独立的数据透视表是laravel(和大多数其他框架)中常用的方法,用于许多关系。它很容易维护,很容易用很多到很多关系得到相关的模型,如果将来有人需要处理它,他们可能过去也会用过,所以最后不会烧到头。

你可以使用的另一种方法是在其中一个表上创建一个json列(如果你想的话,你也可以在两个表上创建,但那只是额外的开销)。然后你可以在这个json列中存储相关模型的id。然后你可以使用你的数据库提供的json相关命令来连接这些表。Eloquent不支持json上的关系,但你可以使用这个包。STUDENMERELOQUENT-JSON-REARRELATIONS 来建立json字段的关系。

所以总的来说,我建议像标准方式一样保留一个数据透视表,但如果这样就不行了,那么你可以试试json列的方法。

© www.soinside.com 2019 - 2024. All rights reserved.