我嘗試使用三個輸入進行搜索,在第一種情況下,當我使用所有輸入進行搜索時,它回傳結果,在第二個場景中,當我僅使用一個欄位進行搜索時,它會回傳所有記錄,當我搜索時一個欄位回傳一個特定的結果,
public function multiSearch(Request $request){
$search = $request->input('search');
$search_1 = $request->input('search_1');
$search_2 = $request->input('search_2');
$cars = Car::query()
->where('price', 'LIKE', "%{$search}%")
->orWhere('model', 'LIKE', "%{$search_1}%")
->orWhere('transmission', 'LIKE', "%{$search_2}%")
->get();
return view('car.car-multisearch', ['cars'=>$cars]);
}
這是我的刀片代碼
<form type="get" action="{{url('/search-car')}}">
@csrf
<div class="row">
<div class="col-md-4">
<p>
<input type="text" name="search" placeholder="Price" />
</p>
</div>
<div class="col-md-4">
<p>
<input type="text" name="search_1" placeholder="Model Year" />
</p>
</div>
<div class="col-md-4">
<p>
<select name="search_2">
<option data-display="Transmission">Transmission</option>
<option value="Automatic">Automatic</option>
<option value="Manual">Manual</option>
</select>
</p>
</div>
<button type="submit" class="gauto-theme-btn">Find Car</button>
</div>
</form>
uj5u.com熱心網友回復:
您可以根據請求中存在的值以及它們是否不為空,動態地將 where 陳述句添加到您的查詢中。例子:
public function multiSearch(Request $request){
$cars = Car::query();
if ( $request->filled('search') ) {
$cars->where('price', 'LIKE', "%{$request->input('search')}%");
}
if ( $request->filled('search_1') ) {
$cars->orWhere('model', 'LIKE', "%{$request->input('search_1')}%");
}
if ( $request->filled('search_2') ) {
$cars->orWhere('transmission', 'LIKE', "%{$request->input('search_2')}%");
}
return view('car.car-multisearch', ['cars'=> $cars->get() ]);
}
這個解決方案可以完成這項作業,但看起來不太好,因為您需要為每個過濾器添加更多的 if 陳述句。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/352669.html
下一篇:搜索不回傳查詢
