Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

kk_take
allabout
その道のプロである専門家(ガイド)を基盤に、総合情報サイトを中心とした様々なサービスをWEB&リアルで展開
https://allabout.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away