Как я могу использовать wheredate и wherehas одновременно?
Мой запрос таков:
$search = $request->get('search');
$search_date = $request->get('search_date');
$store = Store::whereDate('updated_at', $search_date)->orWhereHas('user'), function($query) use ($search) {
$query->where(function ($q) use($search)
{
$q->where('name', 'LIKE', '%',$search.'%');
});
})->paginate(10);
При выполнении ошибки не возникает. Но результат не совпадает с датой фильтра
Когда я использую только wheredate без wherehas, это совпадает с фильтром
Что за wheredate
а также wherehas
не может работать одновременно?
Обновить
У меня есть 2 ввода текста, то есть ввод текста для DatePicker и ввод текста для поиска имени. Когда пользователь хочет выполнить поиск, он может ввести обновленную дату и ввести имя. Затем нажмите кнопку поиска. И система отфильтрует это.
1 ответ
Ты использовал orWhereHas
, Если вы хотите оба критерия тура (где и где), вы должны использовать wherehas
вместо orWhereHas
:
$store = Store::whereDate('updated_at', $search_date)->whereHas('user'), function($query) use ($search) {
$query->where(function ($q) use($search) {
$q->where('name', 'LIKE', '%',$search.'%');
});
})->paginate(10);
Другими словами, если вам нужно, чтобы оба условия выполнялись, используйте and
не or
(and
подразумевается с помощью построителя запросов laravel)