【发布时间】:2016-12-06 11:56:55
【问题描述】:
我有这个 mysql 数据库,其中有两个表:orders & products。
表格
+-------------+
|orders |
+-------------+
|id |
|address |
+-------------+
+-------------+
|products |
+-------------+
|id |
|price |
|qty |
+-------------+
每个Order 有多个items,它们是Product。我知道存储此 order_item 数据的两个选项。
1。订单项模型
使用这种方法,我将创建一个名为OrderItem 的新的雄辩模型和一个名为order_items 的表。并在Order 和OrderItem 模型中创建关系。
+-------------+
|order_items |
+-------------+
|product_id |
|order_id |
|price |
|qty |
+-------------+
// inside Order model
public function orderItems() {
return $this->hasMany('App\OrderItem');
}
// inside OrderItem model
public function order() {
return $this->belongsTo('App\Order');
}
2。数据透视表
创建Order - Product 多对多关系。
+-------------+
|order_product|
+-------------+
|product_id |
|order_id |
|price |
|qty |
+-------------+
// inside Order model
public function products() {
return $this->belongsToMany('App\Product')->withPivot('price', 'qty');
}
// inside Product model
public function orders() {
return $this->belongsToMany('App\Order')->withPivot('price', 'qty');
}
就 Laravel 及其代码而言,哪种方法更好?我相信这个问题不属于 DBA 论坛,因为它几乎是一个 Laravel 问题。征求 Laravel 专家的意见。感谢您的帮助。
【问题讨论】:
-
所以唯一的区别是表的名称。 !?!?