Sometimes we see a clear difference between donors, but I don't know why?
Jan 26, 2023
32
Level 6
filter search
Hello / My biggest problem is creating a search filter. How to leave several inputs blank in the search form and fill one input and perform the search. I thought about this way for several days, but I could not solve it.
search form
<form action="{{ route('rentsearch') }}" method="GET">
@csrf
<input type="text" name="street"><br>
<input type="number" name="pish"><br>
<input type="number" name="mah"><br>
<input type="number" name="metraj"><br>
<input type="number" name="bedroom"><br>
<input type="checkbox" value="1" name="parking" id="parking">
<input type="checkbox" value="1" name="elv" id="elv">
<input type="checkbox" value="1" name="storeroom" id="storeroom">
<button type="submit" class="btn btn-primary col-10">search</button>
</form>
controller
$operators = [
['parking', '=', $request->boolean('parking')],
['elv', '=', $request->boolean('elv')],
['storeroom', '=', $request->boolean('storeroom')],
// ];
// if (!empty($request->street)) {
$operators[] = ['street', 'LIKE', "%{$request->street}%" ],
// }
// if (!empty($request->pish)) {
$operators[] = ['pish', '<=', $request->pish],
// }
// if (!empty($request->mah)) {
$operators[] = ['mah', '<=', $request->mah],
// }
// if (!empty($request->bedroom)) {
$operators[] = ['bedroom', '<=', $request->bedroom],
// }
// if (!empty($request->metraj)) {
$operators[] = ['metraj', '<=', $request->metraj],
];
dd(Rent::where($operators)->toSql(), $request->all());
$dat = Rent::where($operators)->get();
return view(
dd($dat); and fill input street
"select * from `rents` where (`parking` = ? and `elv` = ? and `storeroom` = ? and `street` LIKE ? and `pish` <= ? and `mah` <= ? and `bedroom` <= ? and `metra ▶" // app\Http\Controllers\HouseController.php:78
array:9 [▼ // app\Http\Controllers\HouseController.php:78
"_token" => "bqhen1GAlmR2G5ub4hsu52lpAjxxE1D5K4NSlzzU"
"street" => "love"
"pish" => "10000000000"
"mah" => "10000000000"
"metraj" => "10000000000"
"bedroom" => "10000000000"
"parking" => "on"
"elv" => "on"
"storeroom" => "on"
]
Level 102
@LoverToHelp It didnt give that error before? You just got no records. Can you show the output of
$dat = Rent::query()
->when($request->boolean('parking'), fn($query, $value) => $query->where('parking', $value))
->when($request->boolean('elv'), fn($query, $value) => $query->where('elv', $value))
->when($request->boolean('storeroom'), fn($query, $value) => $query->where('storeroom', $value))
->when($request->input('street'), fn($query, $value) => $query->where('street', 'LIKE', "%{$value}%"))
->when($request->input('pish'), fn($query, $value) => $query->where('pish', '<=', $value))
->when($request->input('mah'), fn($query, $value) => $query->where('mah', '<=', $value))
->when($request->input('bedroom'), fn($query, $value) => $query->where('bedroom', '<=', $value))
->when($request->input('metraj'), fn($query, $value) => $query->where('metraj', '<=', $value))
->dd();
Please or to participate in this conversation.