我有两张桌子:
orders
-id
-status_id
status
-id
-label
关系是:
任何订单都有一个状态
public function status()
{
return $this->hasOne('App\Status');
}
任何状态都可以属于多个订单
public function orders()
{
return $this->belongsToMany('App\Order');
}
我认为这是正确的吗?
现在,如果我使用:
$o = Status::with('orders')->get();
我收到了所有订单。 如果我使用:
$o = Order::with('status')->get();
我收到错误!
未找到列:1054未知列' status.order_id'在' where子句' (SQL:select {from status
status
。order_id
in(1,2,3,4,5))
但是我没有status.order_id,而是我有order.status_id。
如何获得订单状态的标签?喜欢 order-> status->标签?
答案 0 :(得分:2)
您必须使用hasMany
作为一对多关系。您的订单功能应该是这样的:
public function orders()
{
return $this->hasMany('App\Order');
}
status
的功能应为belongsTo
。
public function status()
{
return $this->belongsTo('App\Status');
}
belongsToMany
用于与数据透视表的多对多关系。