$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();
}