【问题标题】:inserting data to multiple tables from a single imported CSV in laravel在 laravel 中从单个导入的 CSV 将数据插入多个表
【发布时间】:2019-06-11 11:38:51
【问题描述】:

我正在尝试在 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 分开吗? 任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 当然可以。只需将字段更具体地分离为 2 个表的表结构,然后将数据放入正确的模型中
  • 我没有明白你的意思,请具体说明。

标签: mysql laravel csv


【解决方案1】:

您必须在 foreach() 循环中执行多个查询,因为您有多个表。在不知道 CSV 文件和相关表格的结构的情况下,很难进一步指定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2018-06-20
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多