・配列に入れてまとめてInsert
<?php $value = ['aaa', 'bbb', 'ccc']; $data = []; foreach ($value as $item) { $data[] = ['param1' => $item, 'param2' => 1, 'param3' =>1]; } Capsule::table('テーブル名')->Insert($data);
・Insertかデータが存在すればUpdateする
<?php firstOrNew(['カラム'=>'値']) カラムに指定した値があれば更新なければ作成する $query = User::firstOrNew(['param1'=>'aaa']); $query->param2 = aaa; $query->param3 = aaa; $query->save(); $query = User::firstOrNew(['param1'=>'ddd']); $query->param2 = ddd; $query->param3 = ddd; $query->save();
・DUPLICATE KEY UPDATE
基本的に上のfirstOrNewと同じだが1度のクエリで実行できる
<?php //入れたいデータ $datum[] = "('aaa', 100, 2)"; $datum[] = "('bbb', 100, 2)"; //カラム $column = "(param1, param2, param3)"; //('aaa', 100, 2),('bbb', 100, 2) とカンマ区切りで結合する $values = implode(',', $datum); $sql = "INSERT INTO `テーブル名` {$column} VALUES {$values} ON DUPLICATE KEY UPDATE `param1`=VALUES(`param2`), updated_at = NOW()"; DB::statement($sql); //SQL文 INSERT INTO `テーブル名` (param1, param2, param3) VALUES ('aaa', 100, 2),('bbb', 100, 2) ON DUPLICATE KEY UPDATE `param1`=VALUES(`param2`), updated_at = NOW()
カラムなどは改行するとエラーになるので注意。