我们如何使用Eloquent ORM在Laravel中执行批量数据库插入?
我想用Laravel:https://stackoverflow.com/a/10615821/600516来完成这个任务,但是我得到了下面的错误。
SQLSTATEHY093:参数编号无效:混合了命名参数和位置参数。
发布于 2012-11-28 07:54:16
您可以只使用Eloquent::insert()
。
例如:
$data = array(
array('name'=>'Coder 1', 'rep'=>'4096'),
array('name'=>'Coder 2', 'rep'=>'2048'),
//...
);
Coder::insert($data);
发布于 2014-10-26 13:01:22
我们可以更新GTF answer来轻松地更新时间戳
$data = array(
array(
'name'=>'Coder 1', 'rep'=>'4096',
'created_at'=>date('Y-m-d H:i:s'),
'modified_at'=> date('Y-m-d H:i:s')
),
array(
'name'=>'Coder 2', 'rep'=>'2048',
'created_at'=>date('Y-m-d H:i:s'),
'modified_at'=> date('Y-m-d H:i:s')
),
//...
);
Coder::insert($data);
更新:为了简化日期,我们可以按照@Pedro Moreira的建议使用carbon
$now = Carbon::now('utc')->toDateTimeString();
$data = array(
array(
'name'=>'Coder 1', 'rep'=>'4096',
'created_at'=> $now,
'modified_at'=> $now
),
array(
'name'=>'Coder 2', 'rep'=>'2048',
'created_at'=> $now,
'modified_at'=> $now
),
//...
);
Coder::insert($data);
UPDATE2:对于laravel 5,使用updated_at
而不是modified_at
$now = Carbon::now('utc')->toDateTimeString();
$data = array(
array(
'name'=>'Coder 1', 'rep'=>'4096',
'created_at'=> $now,
'updated_at'=> $now
),
array(
'name'=>'Coder 2', 'rep'=>'2048',
'created_at'=> $now,
'updated_at'=> $now
),
//...
);
Coder::insert($data);
发布于 2017-06-04 20:13:00
这就是你如何以更有说服力的方式做到这一点,
$allintests = [];
foreach($intersts as $item){ //$intersts array contains input data
$intestcat = new User_Category();
$intestcat->memberid = $item->memberid;
$intestcat->catid= $item->catid;
$allintests[] = $intestcat->attributesToArray();
}
User_Category::insert($allintests);
https://stackoverflow.com/questions/12702812
复制相似问题