我正在嘗試從類別中獲取類別和選定的專案。這是我的代碼:
$reqItems = $request->items; //array - selected item
$categories = Category::where('type_id', 1)
->whereHas('items', function ($query) use ($reqItems){
$query->whereIn('id', $reqItems);
})
->with('items');
->get();
但這將回傳所有專案,即使不在選定專案中。
我嘗試使用 foreach,它回傳 null
$reqItems = $request->items; //array - selected item
$categories = Category::where('type_id', 1)->with('items');
foreach($reqItems as $reqItem) {
$categories = $categories->whereHas('items', function ($query) use ($reqItem){
$query->where('id', '=', $reqItem);
});
}
$categories = $categories->get();
如何只回傳選定的專案?
uj5u.com熱心網友回復:
正如@lagbox 所建議的,這里的作業代碼是:
$reqItems = $request->items;
$categories = Category::where('type_id', 1)
->with(['items' => function ($query) use ($reqItems){
$query->whereIn('id', $reqItems);
}])->get();
uj5u.com熱心網友回復:
當您希望預先加載關系并為預先加載查詢指定其他查詢條件時。您可以通過將一組關系傳遞給 with 方法來實作這一點,其中陣列鍵是關系名稱,陣列值是一個閉包,它向急切加載查詢添加了額外的約束:
$categories = Category::where('type_id', 1)
->whereHas('items', function ($query) use ($reqItems){
$query->whereIn('id', $reqItems);
})
->with(['items'=>function ($query) use ($reqItems){
$query->whereIn('id', $reqItems);
}])
->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349334.html
上一篇:Laravel檔案未上傳
下一篇:使用外鍵字串執行遷移時出錯
