模型是项目,额外和订单。
每个订单都有很多项目,所以它是多对多关系,而order->项目有很多额外功能,所以它是多对多关系。
我有一个用于order_items(id,order_id,item_id)的数据透视表,以将商品与订单相关联,但是我该如何将该商品与许多其他商品相关联,所有这些商品都是很多对很多
答案 0 :(得分:0)
每个订单都有很多商品,所以它是多对多关系
这是不正确的思维方式,如果每个订单有很多项目,而任何项目有很多订单,那就是多对多关系,否则就是一对多关系。对于任何多对多关系,您都需要数据透视表,例如说订单和物料具有多对多关系,如下所示:
在app / Order.php中
public function items()
{
return $this->belongsToMany('App\Item');
}
答案 1 :(得分:0)
您可以根据需要为数据透视表创建模型,该模型为 OrderItem 然后只需重复您对 Order 和 Item 模型所做的操作,并为 Item 和 Extra 创建另一个枢轴。
数据库架构:
orders
id - integer
title - string
body - text
items
id - integer
title - string
order_items
id - integer
order_id - integer
item_id - integer
extras
id - integer
title - string
order_item_extras
id - integer
order_item_id - integer
extra_id - integer
订单模型:
public function items()
{
return $this->hasMany('App\OrderItem');
}
项目模型:
public function orders()
{
return $this->hasMany('App\OrderItem');
}
OrderItem模型:
public function orders()
{
return $this->belongsTo('App\Order');
}
public function extras()
{
return $this->belongsToMany('App\Extra');
}
附加型号:
public function items()
{
return $this->belongsToMany('App\OrderItem');
}