Мне нужно вставить большой набор записей в таблицу базы данных. Я получаю данные из файла CSV. Я думал об использовании инструкции multi-insert для хорошей производительности. Поэтому я сделал что-то похожее на следующее:
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 сервера.
Я отлаживал его, распечатывая запрос, и я заметил, что, делая это, Laravel не заботится о одинарных кавычках или двойных кавычках в значении описания, поскольку это автоматически выполняется во время usiung $model::save();
. Печатная версия запроса прерывается, если значение описания имеет одинарные кавычки '
или двойные кавычки "
.
Но если я сделаю что-то вроде
foreach($data as $key=>$value){
$model = new Model();
$model->id = $value->id;
$model->description = $value->description;
blah blah bla
$model->save();
}
Выполняется успешно, не генерируя никаких ошибок. Может ли кто-нибудь дать мне знать, как исправить эту проблему?