#開発環境
PHP7.3
Laravel5.8
MySQL8.0
#フォームから送信した値を保存する時などに、「値を用意しない項目」を$guardedで指定する
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
protected $guarded = ['id'];
}
// データ保存時に['id']は除かれる
// フォーム側で['id']を送信しなくともnullエラーが起きない
#逆に、「この値のみを保存したい」という時は$fillableで指定する
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
protected $fillable = ['chat_room_id', 'context', 'post_user_info_id'];
}
// 送信した値の中から、'chat_room_id', 'context', 'post_user_info_id'のみを保存し、それ以外の値は除かれる
#まとめ
指定時の挙動から、
$fillableは「ホワイトリスト」
$guardedは「ブラックリスト」
と言われているらしい。