我有两个模型。
Order
Invoice
每个 Order
可以有很多 Invoice
s - 和一个 Invoice
可属于多个 Order
s.
所以我可以搜索一个 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(和大多数其他框架)中常用的方法,用于许多关系。它很容易维护,很容易用很多到很多关系得到相关的模型,如果将来有人需要处理它,他们可能过去也会用过,所以最后不会烧到头。
你可以使用的另一种方法是在其中一个表上创建一个json列(如果你想的话,你也可以在两个表上创建,但那只是额外的开销)。然后你可以在这个json列中存储相关模型的id。然后你可以使用你的数据库提供的json相关命令来连接这些表。Eloquent不支持json上的关系,但你可以使用这个包。STUDENMERELOQUENT-JSON-REARRELATIONS 来建立json字段的关系。
所以总的来说,我建议像标准方式一样保留一个数据透视表,但如果这样就不行了,那么你可以试试json列的方法。