エラー: Add [xxxx] to fillable property to allow mass assignment on [App\Database\xxx].

Laravelのinsert処理でエラーが起こった時の対応をメモ。

前提

Laravelのバージョン

$ php artisan --version
Laravel Framework 5.7.22

事象

やりたかったこと

Laravelの

./app/Database

のModelクラスを継承したクラスを使って、
MySQLへの更新処理(insert)を行う。

エラー

更新処理が行われるタイミングでエラーが発生。

エラー: Add [xxxx] to fillable property to allow mass assignment on [App\Database\xxx].

プログラム

Modelクラスを継承し、createメソッドにて、
MySQLへの追加処理を行おうとしていた。

class TestClass extends Model
{
  :
  省略
 :
  
  public function insertData($request)
  {
    $id = (integer)Auth::getUser()->id;
    $setData = array(
                   'xxxx' => $request->xxx,
                   'xxxx' => $id,
                   );
    // create メソッドでMySQLへの追加を実施
    TestClass::create($setData);
  }
}

解決方法

参考サイト

stackoverflowの以下のページを参考。

https://stackoverflow.com/questions/53793841/add-title-to-fillable-property-to-allow-mass-assignment-on-app-post

ちなみに、内容の該当部分は、

この部分を参考にしてうまくいった。

対応内容

先ほどの、createメソッドで更新処理を行なっているクラスの中に、

protected $fillable = ['xxxx'];

というfillable変数を定義した。

class TestClass extends Model
{
  :
  省略
 :
  
  public function insertData($request)
  {
    $id = (integer)Auth::getUser()->id;
    $setData = array(
                   'xxxx' => $request->xxx,
                   'xxxx' => $id,
                   );
    // create メソッドでMySQLへの追加を実施
    TestClass::create($setData);
  }
}
class TestClass extends Model
{
  // このfillable変数を追加
  protected $fillable = ['xxxxxxx'];
  :
  省略
 :
  
  public function insertData($request)
  {
    $id = (integer)Auth::getUser()->id;
    $setData = array(
                   'xxxx' => $request->xxx,
                   'xxxx' => $id,
                   );
    // create メソッドでMySQLへの追加を実施
    TestClass::create($setData);
  }
}