我在Order和Item表之間具有多對多關係。 這種關係是爲了模型中定義:從Laravel的原始列表中排除或刪除子列表
public function items()
{
return $this->belongsToMany('Item', 'order_item', 'order_id', 'item_id');
}
如果客戶將商品的順序,他從一個列表
$items = Item::all();
選擇一個項目,這個選擇的產品添加在中間(支點)表(order_id,item_id)。
問題是,我需要我的物品清單隻包含這些物品,而這些物品以前沒有被選擇過。即數據透視表不包含組合到這個特定順序的這些項目。
僞代碼:
$all_Items = Item::all();
$previously_Selected_Items = select_From_Pivot_Table::where('order_id', '=', $id);
$required_Items_List = $all_items->exclude($previously_Selected_Items);
我使用Laravel 4.2。 有什麼建議? 在此先感謝。
你可以將plz重定向到'whereDoesntHave'的解釋中,以便更好地理解它的工作。我搜索了網頁,但沒有發現任何內容。 @lukasgeiter – 2015-02-11 12:06:03
查看[文檔]中的whereHas(http://laravel.com/docs/5.0/eloquent#querying-relations)。 「WhereDoesntHave'基本上是相反的。它將選擇所有沒有與條件相匹配的相關型號Order的產品('order_id = $ id') – lukasgeiter 2015-02-11 12:08:30
'whereDoesntHave'似乎不存在。任何如何,我正在嘗試'whereHas',到目前爲止它返回一個空數組。有什麼建議麼? – 2015-02-11 13:03:34