我需要在数据库表中插入一大组记录。我从CSV文件中获取数据。我想过使用多插入语句来获得良好的性能。所以,我做类似下面的东西:Laravel多插入问题的值
foreach($data as $key => $value) {
$insert[] = [
'id' => $value->id, 'is_published' => $value->is_published,
"first_name" => $value->first_name, "middle_name" => $value->middle_name, "last_name" => $value->last_name,
"description" => $value->description,
"created_at" => date("Y-m-d H:i:s",strtotime($value->created_at)),
"updated_at" => date("Y-m-d H:i:s",strtotime($value->changed_at))
];
}
if(!empty($insert)){
Model::insert($insert);
}
但在这样做,所以我总是看到错误:
mysql server gone away error.
我已经通过打印查询调试它,我发现,这样做,Laravel不会处理描述值中的单引号或双引号,因为它会在使用时自动执行$model::save();
。如果描述值中包含单引号'
或双引号"
,则打印的查询版本会中断。
但是,如果我做一些东西一样
foreach($data as $key=>$value){
$model = new Model();
$model->id = $value->id;
$model->description = $value->description;
blah blah bla
$model->save();
}
它成功运行,而不会产生任何错误。任何人都可以让我知道如何纠正这个问题吗?
请使用laravel交易插入多条记录。 – Komal
@Komal它与我的问题有什么关系? –
奇怪的行为...我没有做批量插入,但我会试试这个:'str_replace(''','',',$ value-> description)',只是一个想法... –