使用雄辩的ORM在Laravel中批量插入

我们如何使用Eloquent ORM在Laravel中执行批量数据库插入?


我想在Laravel中完成此任务:https://stackoverflow.com/a/10615821/600516 但我收到以下错误。


SQLSTATE [HY093]:参数号无效:混合命名和位置参数。


慕斯王
浏览 1156回答 3
3回答

SMILET

你可以使用Eloquent::insert()。例如:$data = array(    array('name'=>'Coder 1', 'rep'=>'4096'),    array('name'=>'Coder 2', 'rep'=>'2048'),    //...);Coder::insert($data);

幕布斯6054654

我们可以更新GTF答案以轻松更新时间戳$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建议$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);

慕尼黑8549860

对于正在阅读本文的人,请查看createMany()方法。/** * Create a Collection of new instances of the related model. * * @param  array  $records * @return \Illuminate\Database\Eloquent\Collection */public function createMany(array $records){    $instances = $this->related->newCollection();    foreach ($records as $record) {        $instances->push($this->create($record));    }    return $instances;}
打开App,查看更多内容
随时随地看视频慕课网APP