[英]laravel: how to use wherePivot in one to many relationship
我有兩對一對:
狀態>訂單
狀態>票
命令
id, status_id
1, 5
車票
id, status_id
1, 2
狀態
id, table, language_id, key, name
1, 'orders', 1, 1, 'Pending'
2, 'orders', 1, 2, 'Processing'
3, 'orders', 1, 3, 'Shipped'
4, 'orders', 1, 4, 'Canceled'
5, 'orders', 1, 5, 'Complete'
6, 'tickets', 1, 1, 'unanswered'
7, 'tickets', 1, 2, 'answered'
8, 'tickets', 1, 3, 'closed'
//unique(['table', 'language_id', 'key'])
訂單模型
public function status()
{
//ok
return $this->belongsTo('App\Models\Status', 'status_id', 'key')->where('table', 'orders')->where('language_id', 1);
//not ok
return $this->belongsTo('App\Models\Status', 'status_id', 'key')->wherePivot('table', '=', 'orders')->wherePivot('language_id', '=', 1);
}
控制者
$order = \App\Models\Order::find(1);
dd($order->status);
未發現柱::錯誤消息1054未知列“樞軸”在“where子句”(SQL:SELECT * FROM statuses
,其中statuses
。 key
= 5和pivot
=表和pivot
= LANGUAGE_ID極限1)
如果where()可以,為什么會有wherePivot()?
如何正確使用wherePivot?
首先,應該在不同的表(例如“ order_status”)中更好地定義“訂單”和“狀態”之間的關系,而在“ ticket_status”表中,票證與狀態之間的關系
然后,您應該這樣定義關系:
在訂單模型中
public function status()
{
return $this->belongsToMany('App\Status', 'order_status’, status_id', ‘order_id’)->withPivot('language_id');
}
然后這樣稱呼它:
App\Order::find(1)->status()->wherePivot(‘language_id’, 1)->get();
希望它能工作..用我的手機打字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.