вы ищете диапазоны, поэтому логично, что вы получаете несколько дат. также при вводе необходимо установить обе даты для ограничения нижнего и верхнего предела диапазона. в вашей настройке вам нужно отправить и 16/02/20, и 17/02/20, чтобы получать записи для 16/02/20.
, поэтому проверьте, что оба значения доступны, если вам нужно указать конкретный c диапазон.
if ($request->has('deposit_at_from') && $request->has('deposit_at_to') {
$query->whereHas('deposits', function ($query) use ($request) {
$query->whereDate('created_at', '>=', $request->input('deposit_at_from'));
$query->whereHas('deposits', function ($query) use ($request) {
$query->whereDate('created_at', '<=', $request->input('deposit_at_to'));
}
или просто используйте одно поле для фильтрации по дате, если вы хотите получить один результат по дате, и выполните необработанный фильтр:
$query->where(DB::raw("DATE(created_at) = '".date('Y-m-d', $request->input('deposit_date')."'"));