目前我正在 Laravel 上開發(fā) ajax 搜索過濾器,但我無法獲得正確的信息,情況如下:我有 2 張桌子:表1:軟件請(qǐng)求表2:拒絕類別通過選擇選項(xiàng),我將名稱命名為 Value我在控制器功能的查詢頂部添加了該選擇選項(xiàng):$deniedReason = $request->get('deniedReason'); if($deniedReason == "All"){ $deniedReason = ""; }所以這意味著每次我選擇“全部”時(shí)它都會(huì)是空的,這樣我就可以獲得像空一樣的所有數(shù)據(jù)(這就是問題)。這是我當(dāng)前的查詢:$request_data = SoftwareRequest::leftJoin('DenyCategory', 'SoftwareRequest.DenyCategoryId', '=', 'DenyCategory.Id')->where('DenyCategory.Name', 'like', '%' . $deniedReason . '%')->paginate(20);所以問題是,如果我選擇另一個(gè)選項(xiàng)而不是“全部”,例如“已經(jīng)可用”,我確實(shí)會(huì)得到例外的數(shù)據(jù),這意味著表 1 中的所有對(duì)象與具有該選項(xiàng)的表 2 連接,但問題出現(xiàn)在我選擇“全部”,它不會(huì)帶來應(yīng)有的所有數(shù)據(jù),這是因?yàn)椴⒎撬袑?duì)象都DenyCategoryId在 Table1 中,這意味著其中一些對(duì)象為空/空,因此它只會(huì)帶來我在前一個(gè)代碼塊。$deniedReason = $request->get('deniedReason'); if($deniedReason == "All"){ $deniedReason = ""; }當(dāng)我選擇“全部”選項(xiàng)時(shí)如何使所有數(shù)據(jù)為空或不為空,以及當(dāng)我選擇另一個(gè)選項(xiàng)時(shí)如何獲取數(shù)據(jù)?我敢打賭這與查詢不是“喜歡”有關(guān),但這超出了我的知識(shí)范圍。
1 回答

江戶川亂折騰
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
為什么不將該where條款設(shè)為可選?
$queryBuilder = SoftwareRequest::leftJoin('DenyCategory', 'SoftwareRequest.DenyCategoryId', '=', 'DenyCategory.Id')
// Only apply where-clause when denied reason has been provided.
if ($request->get('deniedReason') !== 'All') {
? ? $queryBuilder = $queryBuilder->where('DenyCategory.Name', 'like', '%' . $deniedReason . '%');
}
$request_data = $queryBuilder->paginate(20);
- 1 回答
- 0 關(guān)注
- 168 瀏覽
添加回答
舉報(bào)
0/150
提交
取消