#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() ?