将数据从laravel中的单个导入的CSV插入多个表中

时间:2019-06-11 11:38:51

标签: mysql laravel csv

我正在尝试在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分离到单独的表中吗? 任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

因为您有多个表,所以必须在foreach()循环内执行多个查询。如果不知道CSV文件和相关表的结构,就很难进一步指定。