fullstackru
@fullstackru

Как получить данные из массива?

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

$days = [];

$graphData = [];
for($f = $left_bound_date; $f < $right_bound_date; $f->addDays(1)) {
    $days[] = $f;
    $graphData[$f->format('d.m.Y')] = [];
}

foreach($days as $day) {
    foreach ($opers as $operator) {
        $graphData[$day->format('d.m.Y')][$operator->id] = LiveCallHistory::where('user_id', '=', $operator->id)
            ->where('start_date', '>=', $day->startOfDay())
            ->where('start_date', '<', $day->endOfDay())
            ->count();
    }
}

dump($graphData);
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
zetamen
@zetamen
В поисках нового
Проблема в $days[] = $f;. У тебя в каждом элементе массива хранится ссылка на один и тот же инстанс. А $f->addDays(1) меняет значение поля этого инстанса до последнего дня.

Насколько я понял из документации, достаточно добавить copy: $days[] = $f->copy();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы