LoginSignup
59

More than 5 years have passed since last update.

【Laravel:Eloquentクラス】fillableとguardedの指定はどちらかだけでいい

Last updated at Posted at 2016-07-31

insertやcreateメソッドでテーブルのカラムに値を挿入する事ができます。
そのような複数代入をする際に、予期せぬ代入が起こることを防ぐために、
モデルへfillableguardedを設定する必要があります。

「予期せぬ代入」って?

複数代入による予期せぬ代入とは、製作者が意図していない代入のことです。
ユーザーから変えてほしくない値(例えばidや管理者権限を管理するカラムなど)
を自由に変えることができてしまったら困ってしまいますよね😭😭😭 事件になります。

入力によって変動する値を安全に管理するために、以下の指定が必要となります。

【方法】fillableとguardedの設定

$fillable - ホワイトリスト_複数代入時に代入を許可する属性を配列で設定

protected $fillable = ['name', 'age', 'updated_at'];

$guarded - ブラックリスト_複数代入時に代入を許可しない属性を配列で設定

protected $guarded = ['id'];

Eloquentクラスにて上記の設定を行うことで、複数代入における許可設定が可能となります。

【注意】fillableとguardedの指定はどちらかだけでいい

fillableとguardedの設定はどちらか一方のみで大丈夫です
これらの両者の属性を両方同時に設定することはできません!
注意です。

このように設定方法は二種の設定方法があります。
コードの可読性を意識して状況ごとに使い分けましょう!!

ドキュメントにも記述してありましたが、こちらの文面のみではあまり理解がしづらい部分が個人的にあったため今回まとめさせていただきました。
参考:Laravel5.1 Eloquent https://readouble.com/laravel/5/1/ja/eloquent.html

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
59