[解決済み] Laravelにおける「Mass Assignment」の意味とは?
質問
LaravelのドキュメントでEloquent ORMのトピック部分を見ていたら、新しい用語 "Mass Assignment" が出てきたのですが、これは何ですか?
ドキュメントでは、マスアサインメントを行う方法と
$fillable
または
$guarded
プロパティを設定します。しかし、それをやった後では、「大量割り当て」とそれがどのように機能するのかを明確に理解することはできませんでした。
CodeIgniterの過去の経験では、この用語は聞いたことがありませんでした。
どなたかわかりやすい説明をお持ちの方はいらっしゃいますか?
どのように解決するのですか?
大量代入とは、モデル作成時に配列を送ることです。基本的に、モデル上のフィールドを一つ一つ設定するのではなく、一度にまとめて設定するようなものです。
$user = new User(request()->all());
(これは、モデル上の各値を個別に明示的に設定する代わりに)
を使用することができます。
fillable
で、実際に更新を許可するフィールドを保護します。
また、このようにすることで、すべてのフィールドをマスアサインメントできないようにすることができます。
protected $guarded = ['*'];
例えば、ユーザー・テーブルに
user_type
で、その値は user / admin です。
明らかに、ユーザーがこの値を更新できないようにしたいのです。理論的には、上記のコードを使用すると、誰かがフォームに新しいフィールド
user_type
を送信し、他のフォームデータと一緒に'admin'を送信すると、簡単に自分のアカウントを管理者アカウントに切り替えることができます...悪い知らせです。
追加することで
$fillable = ['name', 'password', 'email'];
を使用して、それらの値のみが更新できるようにしているのです。
mass assignment
を更新できるようにするために
user_type
の値は、このように明示的にモデルに設定し、保存する必要があります。
$user->user_type = 'admin';
$user->save();
関連
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み] PHPのstdClassとは何ですか?
-
[解決済み] Laravel Eloquentを使用して複数のWhere句クエリを作成する方法?
-
[解決済み] Laravel Eloquentを使って最後に挿入されたIDを取得する
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み】Laravel - Eloquent "Has", "With", "WhereHas" - これらの意味は何ですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない