@Maxwelss

Почему не видит ключ в массиве?

Я получаю массив, через dd его проверяю, все ок, получаю идентификатор дня.
dd($day['day']);
632cbf90972b9677985274.jpeg

Но при попытке добавить его бд, получаю ошибку.
Undefined array key "day"

foreach ($days  as $day){
            Day::create([
                'day_id' => $day['day'],
                'start_time' => $day['start'],
                'end_time' => $day['end'],
            ]);
        }
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 3
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Вы всё еще мучаетесь? =))

Дело в том, что невыбранный чекбокс не отправляется.
В самом ларавел можно использовать хуки в запросах и модифицировать входящие данные до валидации.
Если это кажется сложным или просто не хочется, то существует своего рода хак, чтобы исправить подобное поведение чекбоксов.

<input type="hidden" value="0" name="days[{{$key}}][day]">
<input type="checkbox" value="1" name="days[{{$key}}][day]"> {{$value}}


Если в форме присутствуют два поля с одинаковым именем, то будет отправлено последнее из них. То есть, если чекбокс выбран, то будет отправлено значение "1", если нет, то отправится значение "0".
Таким образом, в приходящем массиве у вас всегда будет заполненное поле.
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Добавьте валидацию данных:
foreach ($days as $day) {
    if (isset($day["day"]) && isset($day["start"]) && isset($day["end"])) {
        Day::create([
            "day_id" => $day["day"],
            "start_time" => $day["start"],
            "end_time" => $day["end"],
        ]);
    }
}
Ответ написан
Комментировать
@lil_koi
лучший из худших
ну если у тебя цикл из нескольких эллементов, логично препдоположить, что в первом элементе у тебя есть этот ключ, в каком-то другом нет. Засунь в цикл dump($day['day']);и посмотри, что у тебя там лежит(во время дампа, закоментируй создание Day
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
27 апр. 2024, в 19:58
2500 руб./в час
27 апр. 2024, в 19:48
10000 руб./за проект