Laravel7 $fillableと$guardedの使い方

Laravel7 $fillableと$guardedの使い方

Laravel7で、Eloquent利用時に$fillableと$guardedの使い方を記述してます。

環境

  • OS windows10 pro 64bit
  • Composer 1.10.5
  • PHP 7.4.5
  • MariaDB 10.4.12
  • Laravel Framework 7.6.2

※windows10に Laravel のインストールはこちら
※Laravel7でEloquentの利用はこちら

$fillable使い方

ホワイトリストとして利用できます。
指定したカラムに対してのみ、 create()やupdate() 、fill()が可能になります。

class Task extends Model
{
    protected $fillable = [
        'subject',
    ];
}

利用するテーブル名は「tasks」でカラムは、次の画像のようになります。

下記のコードを記述した場合、カラム「subject」のみがアップデートされます

public function update(StoreTask $request, $id)
    {
        $update = [
            'subject' => $request->subject,
            'description' => $request->description,
            'completed' => $request->completed,
            'complete_date' => $request->complete_date,
        ];
        Task::where('id', $id)->update($update);
        return back()->with('success', '編集しました');
    }

$guarded使い方

ブラックリストとして利用できます。
指定したカラムは、 create()やupdate() 、fill()が不可能となります。

class Task extends Model
{
    protected $guarded = [
        'subject',
    ];
}

下記のコードを記述した場合、エラーとなります。

public function update(StoreTask $request, $id)
    {
        $update = [
            'subject' => $request->subject,
            'description' => $request->description,
            'completed' => $request->completed,
            'complete_date' => $request->complete_date,
        ];
        Task::where('id', $id)->update($update);
        return back()->with('success', '編集しました');
    }