Laravel maatwebsite 导入并用 select 表格填写一列

Laravel maatwebsite import and fill a column with a select form

我正在使用 maatwebsite 的 Excel 导入库将员工导入数据库 table 并且效果很好。但是,在我 select 要导入 Excel 文件的查看页面上,我有一个 select 下拉列表显示来自相关公司 table 的数据,因此特定 selected 公司发布到所有当前导入的员工的 Comp_id 外键。我在各自的 CompanyEmployee 模型中创建了 hasManybelongsTo 关系。

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 模型作为 class 包含在 EmployeeController 中。

我想使用 selected 下拉列表的 Comp_id 值添加字段插入 'Comp_id' => ....。如何在函数中创建 $company 变量,以便可以为每一行插入 selected Comp_id?还是有完全不同的方式?

提前致谢。

假设您的视图有一个带有 select 和 Comp_id 的表单,您应该能够从您的输入 request 中获取它:

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

只是一个提示:看看 laravel 的 mass assignment 功能。

'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'),
            ];