Laravel Excel Несколько таблиц primary_id сохранить в другой таблице в качестве foreign_id - PullRequest
0 голосов
/ 10 октября 2019

Я могу успешно импортировать данные Excel в Laravel и вставлять в базу данных несколько таблиц. Я использую пакет композитора maatwebsite / excel версии 3 и версию laravel 5.8

Как вставить значение mamber_id в таблицу licence_application (внешний идентификатор), которая является основным идентификатором таблицы участника.

Файл ImportClass:

class UsersImport implements ToCollection
{
    /**
     * @param Collection $collection
     */
    public function collection(Collection $rows)
    {

        foreach ($rows as $row){
            Member::create([
                    'full_name'     => $row[0],
                    'father_name'   => $row[1],
                    'mother_name'   => $row[2],
                    'cell_number'   => $row[3],
            ]);
            LicenceApplication::create([
                'member_id' => ???
                'licence_category_name' => $row[4],
            ]);
            LicenceSuccess::create([
                'application_type' => $row[5],
            ]);
        }        

    }
}

Файл контроллера: ImporExcelController.php

public function import(Request $request)
{
     $this->validate($request, [
        'select_file' => 'required|mimes:xls,xlsx'
     ]);

     $path = $request->file('select_file')->getRealPath();

     $data = Excel::import(new UsersImport, $path);

     return back()->with('success', 'Import data successfully!');
}

Скриншот файла Excel: https://imgur.com/a/XhxBRpW

Пожалуйста, помогите мне, как решить эту проблему?

1 Ответ

0 голосов
/ 10 октября 2019

Я решаю эту проблему вот код.

foreach ($rows as $row){
        $memberId = Member::create([
            'full_name'     => $row['full_name'],
            'father_name'   => $row['father_name'],
            'mother_name'   => $row['mother_name'],
            'cell_number'   => $row['cell_number'],
        ]);
        $applicationId  = LicenceApplication::create([                
            'member_id'             => $memberId->member_id,
            'licence_category_name' => $row['licence_category_name'],
        ]);
        LicenceSuccess::create([
            'member_id'         => $memberId->member_id,
            'application_id'    => $applicationId->application_id,
            'application_type'  => $row['application_type'],
        ]);
    }
...