
こんにちは、京町啓一です。
今回は MassAssignmentException エラーへの対処法 についてです。
エラー発生時のコード
// tinker App\Message::first()->update(['content' => 'guarded'])
messages テーブルの content カラムの内容を guarded へ変更しようとしたときに、MassAssignmentException エラーが発生しました。
エラー内容
// tinker Illuminate/Database/Eloquent/MassAssignmentException with message 'content'
対処法
モデルファイルに変更許可を記述する
モデルファイルに変更許可を施す方法は、2つあります。
1.ブラックリスト方式
変更を許可しないカラムを指定します。
こちらの手法の方が記述が少なくて済む場合が多いかと思います。
今回の私のエラーへの対処法としての記述例を挙げておきます。
('id' だけを変更させないための記述です)
// app/Message.php <?php namespace App; use Illuminate\Database\Eloquent\Model; class Message extends Model { protected $guarded = ['id']; }
2.ホワイトリスト
変更を許可するカラムを指定する方法です。
今回の私のエラーへの対処法としての記述例を挙げておきます。
('content' だけに変更を許可するための記述です)
// tinker <?php namespace App; use Illuminate\Database\Eloquent\Model; class Message extends Model { protected $fillable = ['content']; }
tinker を再起動する
tinker を利用中だった場合は、exit で tinker から抜けましょう。
再度、php artisan tinker
でtinker を起動しましょう。
カラム内容の変更を再度実行する
// tinker App\Message::first()->update(['content' => 'guarded'])