我正在尝试在laravel中导入CSV文件,该文件包含要存储在mysql数据库的多个表中的数据。实际上,我的联系人具有多个电子邮件,地址,电话等,因此我希望它们与从CSV新创建的联系人的contactId一起存储在各自的表中。
现在可以在单个表中插入,但是当我介绍要在其他表中插入的列(如电子邮件,地址等)时,由于电子邮件地址等列不存在,因此出现了在联系人表中找不到的列。
插入的控制器方法
public function processImport(Request $request){
$data = CsvData::find($request->csv_data_file_id);
$csv_data = json_decode($data->csv_data, true);
foreach ($csv_data as $row) {
$contact = new Contact(); //Insertion in Contact table
foreach (config('app.contact_fields') as $index => $field) {
if ($data->csv_header) {
$contact->$field = $row[$request->fields[$field]];
} else {
$contact->$field = $row[$request->fields[$index]];
}
}
$contact->save(); //Insertion in Contact table
$id = $contact->id;
}
return 'Successfully imported!';
}
现在我想知道有什么方法可以将要插入的列从单独导入的CSV分离到单独的表中吗? 任何帮助将不胜感激。 谢谢
答案 0 :(得分:0)
因为您有多个表,所以必须在foreach()循环内执行多个查询。如果不知道CSV文件和相关表的结构,就很难进一步指定。