2017年1月27日金曜日

LumenのEloquentでupdate()を呼ぶとMassAssignmentExceptionが出てまう

どうも、俺です。

最近は軽量PHPフレームワークのLumenを使っています。
(※バージョンはたぶん5.2。確認の仕方が分からない...)

最近もっぱらPHP界隈を賑わしているLaravelから派生したフレームワークで、
機能が少ない分、軽量で処理速度も速いそうです。

LaravelもLumenもデータベースモデルはEloquentという機能を使って開発することができ、僕もそれを使っています。

で、データを更新するために
$userObject->update(["name"=>"山田さん", "age"=>30]);
のように実装すると、

 MassAssignmentException
が発生し小一時間ハマりました。

この場合は、その該当のモデルクラスに

// 変更可能なカラム名
protected $fillable = ["name", "age", "その他カラム名"];

// または変更不可能なカラム名
protected $guarded = ["id", "create_at"];

のどちらか(または両方)を記述すればOKです。

ただ、上記の変数を指定しなくてもupdate()メソッドが使える場合もあり、
その理由は未だ不明です...。



ちなみに、insert()またはsave()メソッドでは上記の例外の発生は未確認です。




以上でぇぇぇぇす!

0 件のコメント: