Импорт веб-сайта 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.