вставка данных в несколько таблиц из одного импортированного CSV в laravel - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь импортировать CSV-файл в laravel, который содержит данные для хранения в нескольких таблицах в базе данных MySQL.На самом деле у меня есть Контакты с несколькими электронными письмами, адресами, телефонами и т. Д., Поэтому я хочу, чтобы они сохранялись в соответствующей таблице вместе с contactId контакта, недавно созданного из CSV.

На данный момент вставка в одну таблицу работаетно когда я ввожу столбцы, такие как электронная почта, адрес и т. д., которые должны быть вставлены в другие таблицы, это дает мне столбец, не найденный в таблице контактов, поскольку столбец адреса электронной почты и т. д. отсутствует.

Метод контроллера для вставки

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 голосов
/ 11 июня 2019

Вы должны выполнить несколько запросов внутри цикла foreach (), потому что у вас есть несколько таблиц.Без знания как структуры файла CSV, так и таблиц, о которых идет речь, трудно определить что-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...