Конструктор запросов Laravel — запрос даты не работает

#laravel #laravel-query-builder

#laravel #laravel-конструктор запросов

Вопрос:

я зацикливаюсь на весь месяц, используя for loop

 for ($i = 1; $i < $days; $i  ) {
     $date = now()->format('Y-m-') . $i; //result '2020-08-1'
     $date = Carbon::parse($date); //parsing with carbon
     $profit = Profit::whereDate('created_at', $date->format('Y-m-d'))->first(); //<-- this not working getting null data
     $data[] = $profit;
}
  

но это работает

 $profit = Profit::whereDate('created_at', '2020-08-01')->first(); //<-- its working fine statically
  

что я делаю неправильно, помогите мне, спасибо

Ответ №1:

Это должно сработать, я должен верить, что мы упускаем часть головоломки.

При этом вам не нужно так усердно работать над запросом по дате в Laravel: конструктор запросов без проблем примет углеродные даты. Итак, я бы предложил упростить ваш код до этого и посмотреть, изменит ли это что-нибудь:

 $date = Carbon::today()->startOfMonth(); // This is the first day of today's month, i.e. 2020-08-01
for($i = 0; $i < $days; $i  ) {
    $profit = Profit::whereDate('created_at', $date)->first();
    $data[] = $profit;
    $date->addDay();
}
  

Комментарии:

1. Спасибо, но все еще не знаю, почему он не работал

2. Новый код все же работает? Помимо того, что он немного более эффективен, он должен соответствовать тому же SQL-запросу, что и ваш… Очень странно. Вы пробовали проверять SQL вашего старого способа ведения дел? т.е. Profit::whereDate(‘created_at’, $date-> format(‘Y-m-d’))-> toSql() ?