@VaniXac
17 лет

Почему цикл с данными из базы данных в Laravel не работает правильно?

Вот контроллер:
$tickets = Ticket::where('slot_id', $slot_id)->get();
        $ar = [];
        $slots = Slot::find($slot_id);

        $i = 2;
        do {
            foreach (json_decode($tickets) as $ticket) {
                if($ticket->num_ticket == $i) {
                    $ar[$i] = $ticket;
                } else {
                    $ar[$i] = [];
                }
            }
            $i++;
        } while($i <= $slots->max_tickets);

        return $ar;


А вот что я получаю:
{"2":[],"3":[],"4":[],"5":[],"6":{"id":3,"user_id":1,"slot_id":2,"num_ticket":6,"created_at":"2018-03-31 00:00:00","updated_at":"2018-03-31 00:00:00"},"7":[],"8":[],"9":[],"10":[]}


Цикл срабатывает правильно только на 3 объекте. Всего их три, в которых num_ticket раны 2, 5 и 6. Почему он срабатывает только на 6. Пробовал вместо $i подставлять в ручную 2 ил 5, тогда он в json ответе возвращает все 10 объектов пустыми.
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux
$tickets = Ticket::where('slot_id', $slot_id)->get();
        $ar = [];
        $slots = Slot::find($slot_id);

        $i = 2;
        do {
            foreach (json_decode($tickets) as $ticket) {
                if($ticket->num_ticket == $i) {
                    $ar[$i] = $ticket;
                }
            }
            $i++;
        } while($i <= $slots->max_tickets);

        return $ar;
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы