Intereting Posts
Я не могу найти ошибку в php (все начинается здесь: http://stackoverflow.com/questions/30393024/) Как хранить строку / столбец данных mysql в массиве Разрешить пользователям обновлять браузер без всплывающего окна «Подтверждение повторной отправки формы» Как передать значение переменной javascript переменной php? конвертировать изображения в видео на сервер стороне php PHP_CodeCoverage_Filter :: getInstance () Ошибка при запуске phpunit Отобразить сообщение об ошибке для пользовательской проверки в Laravel 4 Каков наилучший способ дезинфекции пользовательских ресурсов? Файлы, не загружаемые в динамически создаваемые папки / подпапки отправка данных на шлюз оплаты и обратно – возможные проблемы как сохранить флажок после обновления страницы Какое регулярное выражение используется для преобразования этой строки в массив? php require_once не работает так, как я хочу. Относительный путь Функция isset () возвращает true, даже если элемент не задан Regex / DOMDocument – сопоставление и замена текста не в ссылке

Что означает «массовое присвоение» в Ларавеле?

Когда я перешел к разделу Laravel Document about the Eloquent ORM, я получил новый термин Mass Assignment .

Отображение документа Как выполнить массовое присвоение и параметры fillable или guarded свойства. Но после этого я не имел четкого понимания о Mass Assignment и о том, как это работает.

В моем прошлом опыте в CodeIgniter я также не слышал об этом термине.

Кто-нибудь имеет простое объяснение по этому поводу?

Solutions Collecting From Web of "Что означает «массовое присвоение» в Ларавеле?"

Массовое присвоение – это когда вы отправляете массив в создание модели, в основном устанавливая кучу полей в модели за один раз, а не один за другим, что-то вроде:

 $user = new User(Input::all()); 

(Это вместо того, чтобы явно устанавливать каждое значение на модели отдельно.)

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

Скажем, в вашей пользовательской таблице есть поле user_type которое может иметь значения user / admin

Очевидно, что вы не хотите, чтобы пользователи могли обновлять это значение. Теоретически, если бы вы использовали приведенный выше код, кто-то мог ввести в форму новое поле для user_type и отправить «admin» вместе с другими данными формы и легко переключить свою учетную запись на учетную запись администратора … плохие новости.

Добавлением:

 $fillable = array('name', 'password', 'email'); 

Вы гарантируете, что только эти значения могут быть обновлены с использованием mass assignment

Чтобы иметь возможность обновить значение user_type , вам необходимо явно установить его на модели и сохранить его, например:

 $user->user_type = 'admin'; $user->save(); 

Массовое назначение означает, что вы заполняете строку более чем одним столбцом, используя массив данных. (несколько ярлык вместо ручного построения массива) с помощью Input::all() .

Технически только с головы. Fillable означает, что столбцы в таблице могут быть вставлены, защита означает, что модель не может вставить в этот конкретный столбец.

Обратите внимание, что когда вы пытаетесь выполнить массовое задание с подобным, вставьте в столбец с именем «secret», и вы указали, что он защищен, вы можете попробовать вставить его через модель, но он никогда не будет вставлен в базы данных.

Это касается безопасности и защиты вашей таблицы при использовании модели. Массовое назначение кажется просто уведомлением или предупреждением о том, что вы не указали модель, которая заполнена и защищена, и делает ее уязвимой для каких-либо атак.

ОБНОВИТЬ

Для Laravel 5.x вы можете ссылаться на последнее массовое назначение документа

ИЛИ

Хорошо подробное объяснение того, когда использовать заполняемые или охраняемые