【问题标题】:Laravel maatwebsite import and fill a column with a select formLaravel maatwebsite 导入并使用选择表单填充列
【发布时间】:2017-01-26 20:27:38
【问题描述】:

我正在使用 maatwebsite 的 Excel 导入库将员工导入数据库表,并且效果很好。但是,在我选择要导入的 Excel 文件的“查看”页面上,我有一个选择下拉菜单,其中显示了相关公司表中的数据,以便将特定选定的公司发布到所有当前导入的员工的 Comp_idforeign钥匙。我在各自的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 模型作为类包含在 EmployeeController 中。

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

提前致谢。

【问题讨论】:

    标签: laravel table-relationships excel-import


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 感谢@passioncoder 的回复。如果我在控制器中使用您的代码,我会收到错误
      • ...“从空值创建默认对象”。我查看了质量分配功能,Comp_id 列在Employee 模型中添加为protected $fillable
      猜你喜欢
      • 2014-01-24
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多