Tôi cần chèn một bộ bản ghi lớn vào bảng cơ sở dữ liệu. Tôi đang nhận dữ liệu từ tệp CSV. Tôi đã nghĩ đến việc sử dụng câu lệnh multi-insert cho hiệu năng tốt. Vì vậy, tôi đã làm một cái gì đó tương tự như sau:Vấn đề Laravel Multi Insert với dấu ngoặc kép có giá trị
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);
}
Nhưng khi làm như vậy tôi luôn luôn thấy lỗi:
mysql server gone away error.
tôi đã sửa lỗi nó bằng cách in các truy vấn và tôi quan sát thấy rằng bằng cách làm như vậy, Laravel không quan tâm đến dấu nháy đơn hoặc dấu ngoặc kép trong giá trị mô tả, vì nó tự động thực hiện trong khi sử dụng $model::save();
. Phiên bản truy vấn được in bị hỏng nếu giá trị mô tả có dấu ngoặc đơn '
hoặc dấu ngoặc kép "
trong đó.
Nhưng nếu tôi làm một số điều như
foreach($data as $key=>$value){
$model = new Model();
$model->id = $value->id;
$model->description = $value->description;
blah blah bla
$model->save();
}
Nó chạy thành công mà không tạo ra bất kỳ lỗi. Ai có thể cho tôi biết làm thế nào để sửa vấn đề này?
Vui lòng sử dụng giao dịch laravel để chèn nhiều bản ghi. – Komal
@Komal Và nó liên quan đến vấn đề của tôi như thế nào? –
hành vi khủng khiếp ... Tôi không thực hiện chèn khối lượng, nhưng tôi sẽ thử điều này: 'str_replace ('"', '\ "', $ value-> description)', chỉ là một ý tưởng ... –