1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-05-21

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?