Как я могу использовать 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)

Другие вопросы по тегам