PHP
初心者
Laravel
Eloquent

51歳からのプログラム 備忘 eloquent データ登録 save()


$model->fill($param)->save();

で、よくしてしまうsave();の用法ミス。

何度も迷走するところ

試行錯誤して時間をかけてしまうので備忘メモ。


間違コード

$param[1]=['氏名'=>'山田','住所'=>'北海道','職業'=>'会社員'];

$param[2]=['氏名'=>'佐藤','住所'=>'佐賀','職業'=>'主婦'];
$param[3]=['氏名'=>'三田','住所'=>'千葉','職業'=>'会社員'];
$param[4]=['氏名'=>'井上','住所'=>'長野','職業'=>'自営業'];
$param[5]=['氏名'=>'田中','住所'=>'山口','職業'=>'会社員'];

$model=new Model;// Modelのインスタンス生成 <- ここが間違い箇所
foreach($param as $key => $value)
{
$model->fill($value)->save();
}

結果は、models(DBテーブル)に一行追加されただけ。




$modelインスタンスは、

models(DBテーブル)の一行分のデータフィールドを操作するインスタンス。

newすることで、新しいデータフィールドを作成して、それをインスタンスで操作する。

newが一度だと、新規に作成する一行しか操作できない。

(一行分のインスタンスしか生成されてない)




上記のコードでは、newは一回だから、

foreachで配列を5回まわしても、

一行のmodels(DBテーブル)に対してしか操作できてない




5行分のmodels(DBテーブル)フィールドを操作するには

5回newしないとね!


修正

foreach($param as $key =>$value)

{
$model=new Model;
$model->fill($value)->save();
}