Laravel model mass assignment

164
05 августа 2018, 17:40

Изучаю Laravel и до конца не могу разобраться в атрибутах 'fillable', 'hidden' и 'guarded' при массовом назначении.

В документации говорится, что при массовом назначении используя 'fillable' 'нечистивые' пользователи могут подменить какой-либо параметр при массовом назначении. Для этого нужно добавить поле которое хочешь защитить в 'guarded' и якобы теперь можно массово назначать 'безопасно'. Так ли это? Тогда несколько вопросов:

  1. Почему бы сразу все поля не вставлять в 'guarded'?
  2. Зачем атрибут 'hidden', про него нигде не сказано... Заметил что поля добавленные в 'hidden' просто не доступны из глобальной переменной 'Auth'
  3. Без заморочек лучше использовать:

$flight = new Flight; $flight->name = $anyname; $flight->save(); и всё будет тип-топ?

Answer 1
  1. Почему бы сразу все поля не вставлять в 'guarded'?

В guarded попадают значения которые не стоило бы добавлять через массовое назначение, вы можете добавить все поля в guarded если хотите, но смысла нет в этом если вы будете использовать 3 вариант:

$flight = new Flight;
$flight->name = $anyname;
$flight->save();

Просто не всегда получается прямо обращаться к методам, да и проще в плане логики и компактности кода работать через массовое назначение.

  1. Зачем атрибут 'hidden', про него нигде не сказано... Заметил что поля добавленные в 'hidden' просто не доступны из глобальной переменной 'Auth'

Он скрывает с вывода поля, вы смотрели на примере User, а вот если вам нужно будет вывести пользователей в массив или json чтобы отдать по API или на фронтенд, вы просто пишите User:find(1)->toArray() и все атрибуты будут выведены кроме hidden, что сильно упрощает вам работу.

  1. Без заморочек лучше использовать:

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

READ ALSO
вывод многомерного массива

вывод многомерного массива

Как вывести с таким видом, чтобы было

185
Работа с Telegram API

Работа с Telegram API

Можно ли как-то получить список подписчиков у публичных телеграм каналов? Всё что на данный момент нашел - getchatmemberscount, но там требуется chat_id,...

174
форма для поиска в sql базе

форма для поиска в sql базе

Интересует вот какая тема, можно ли и есди да то как реализовать поиск по базе с переменной в sql запросе так чтобы использовать только один...

155