Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як валідувати масиви й вкладені дані?

Через «крапкову» нотацію й зірочку, яка означає кожен елемент масиву.

$request->validate([
    'items'              => ['required', 'array', 'min:1', 'max:50'],
    'items.*.product_id' => ['required', 'integer', 'distinct', 'exists:products,id'],
    'items.*.quantity'   => ['required', 'integer', 'min:1'],
    'tags'               => ['array'],
    'tags.*'             => ['string', 'max:30'],
]);

На що звернути увагу:

  • Перевіряйте сам масив (array, max), а не лише елементи. Без обмеження клієнт надішле 10 000 елементів, і для кожного виконаються запити exists.
  • distinct забороняє повтори - той самий товар двічі в одному замовленні.
  • exists на кожен елемент - окремий запит до бази. Для великих масивів краще перевірити всі ID одним запитом у after().
  • Повідомлення можуть містити позицію елемента: :index (з нуля) чи :position (з одиниці) - «Товар #3: кількість має бути не менше 1».

validated() поверне лише ті ключі елементів, для яких є правила, тож зайві поля всередині елементів масиву теж відкинуться.

Докладніше в документації: Валідація вкладених масивів

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання