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

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
為什么不將該where條款設為可選?
$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 關注
- 170 瀏覽
添加回答
舉報
0/150
提交
取消