fullstackru
@fullstackru
Full Stack Разработчик

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
от 55 000 до 80 000 руб.
HTML Academy Санкт-Петербург
от 110 000 до 130 000 руб.
WACDAQ Москва
от 120 000 руб.
21 авг. 2019, в 13:40
25000 руб./за проект
21 авг. 2019, в 13:15
500 руб./за проект