Импорт веб-сайта Laravel и заполнение столбца с помощью формы выбора

Я использую библиотеку импорта Excel maatwebsite для импорта сотрудников в таблицу базы данных, и она работает довольно хорошо. Однако на странице просмотра, где я выбираю файл Excel для импорта, у меня есть раскрывающийся список выбора, в котором отображаются данные из связанной таблицы "Компании", так что конкретная выбранная компания публикуется для всех импортируемых в настоящее время сотрудников. Comp_id иностранный ключ. Я создал hasMany а также belongsTo отношения в соответствующем Company а также Employee моделей.

Данные, отправленные в EmployeeController:

public function viewImport()
{
    $employees = Employee::all(); 
    return view('viewImport', 
        ['companies' => Company::pluck('CompanyName', 'Comp_id')
        ])->withEmployees($employees);
}



 public function importExcel(Request $request)
 {

    if($request->hasFile('import_file')){
        $path = $request->file('import_file')->getRealPath();

        $data = Excel::load($path, function($reader) {})->get();

        $company = Company::.....; /*???????????????

        if(!empty($data) && $data->count()){

            foreach ($data->toArray() as $key => $value) {
                if(!empty($value)){ 
 foreach ($value as $v) {
     $insert[] = ['name'=> $v['name'],
                  'surname'=> $v['surname'],
                  'idno'=> $v['idno'],
                  'phone'=> $v['phone'],
                  'salary'=> $v['salary'],
                  'dob'=> $v['dob'],
                  'jobdescription'=> $v['jobdescription'],
                  'initials'=> $v['initials'],
                  'Comp_id' => .... /* ???????????????
                 ];

Я включил Company модель как класс в EmployeeController.

Я хочу добавить поле вставки 'Comp_id' => .... с Comp_id значение выбранного раскрывающегося списка. Как создать переменную $ company в функции, чтобы выбранный Comp_id можно вставить для каждой строки? Или есть совершенно другой способ?

Заранее спасибо.

2 ответа

Решение

Прибил это с 'comp_id' => $request->get('Comp_id'),

foreach ($data->toArray() as $key => $value) {
    if(!empty($value)){
        foreach ($value as $v) {        
            $insert[] = ['name'=> $v['name'],
             'surname'=> $v['surname'],
             'idno'=> $v['idno'],
             'phone'=> $v['phone'],
             'salary'=> $v['salary'],
             'dob'=> $v['dob'],
             'jobdescription'=> $v['jobdescription'],
             'initials'=> $v['initials'],
             'comp_id' => $request->get('Comp_id'),
            ];

При условии, что ваше мнение имеет форму с выбором с вашим Comp_id, вы должны быть в состоянии получить его из вашего входящего запроса:

$company->comp_id = $request->get('Comp_id');

просто подсказка: взгляните на функцию массового назначения laravel.

Другие вопросы по тегам