Сейчас я работаю над созданием отчета, и у меня есть несколько полей на одной странице: адрес, дата, пол и вакцина.
Я хочу, чтобы даже если адрес был пуст, и я ввел пол, он все равно получит весь выбранный пол, и если пользователь ничего не ввел в поля, он автоматически извлечет все записи. Итак, что я сделал, это
В моем контроллере
if (!$request->input) {
$request->input = "";
}
if (!$request->vaccines) {
$vaccine_id = "";
}else{
$vaccine_id = $request->vaccines;
}
if (!$request->month) {
$newDate = " ";
}else{
$newDate = date("Y-m-d", strtotime($request->month));
}
if (!$request->gender) {
$request->gender = "";
}
$patient = Patient::where('patient_address', 'like' ,'%' . $request->input)->where('patient_sex', 'like' ,'%' . $request->gender)->whereHas('users', function($q) use($vaccine_id){
$q->where('vaccine_id', $vaccine_id);
})->get();
Поэтому я использовал оператор LIKE
, чтобы даже если адрес пациента был пуст, он все равно возвращал результаты, в отличие от оператора =
, он автоматически возвращал false и заканчивал остальную часть предложения WHERE
. Столбцы строкового типа работают нормально, как адрес пациента и пол. Но я только что узнал, что вы не можете использовать оператор LIKE
для целого числа. Поэтому, если я использую =
для вакцины_id, если условие ложно, оно не будет автоматически извлекать все данные из базы данных, в отличие от оператора LIKE
.
Есть ли какое-нибудь решение для этого?