【问题标题】:Importing to 'users' table but also imports to pivot tables导入到“用户”表,但也导入到数据透视表
【发布时间】:2018-09-04 02:49:02
【问题描述】:

我可以导入“用户”表,但我还需要导入数据透视表。这是我的 UsersController 中用于导入“用户”表的代码,但是否可以通过导入向“user_company”、“user_department”等数据透视表提供数据?你能给我看一个导入数据透视表的示例吗?无论如何,这是我的导入代码。

  if( Input::file('file_import') ) {
        $path = Input::file('file_import')->getRealPath();
        $inserts = [];
        Excel::load($path,function($reader) use (&$inserts)
        {
            foreach ($reader->toArray() as $row){
                $inserts[] = ['email' => $row['email'], 'username' => $row
                ['username'], 'password' => $row['password'], 'first_name' => $row['first_name'],'middle_name' => $row['middle_name'], 'last_name' => $row['last_name'], 'gender' => $row['gender'],
                'civil_status' => $row['civil_status'], 'spouse' => $row['spouse'], 'religion' => $row['religion'],'emergency_no' => $row['emergency_no'],'previous_work' => $row['previous_work'],
                'remarks' => $row['remarks'],'course' => $row['course'],'biometrics' => $row['biometrics'],'immediate_head' => $row['immediate_head'],'designation' => $row['designation'],'level' => $row['level'],
                'emp_status' => $row['emp_status'],'dependents' => $row['dependents'],'date_hired' => $row['date_hired'],'regularization_date' => $row['regularization_date'],'remmitance_date' => $row['remmitance_date'],
                'tin' => $row['tin'],'philhealth' => $row['philhealth'],'pagibig' => $row['pagibig'],'sss' => $row['sss'],'umid' => $row['umid'],'phone' => $row['phone'],'avatar' => $row['avatar'],
                'address' => $row['address'],'country_id' => $row['country_id'],'role_id' => $row['role_id'],'birthday' => $row['birthday'],'status' => $row['status']];
            }
        });
    }
  }

    if (!empty($inserts)) {
        DB::table('users')->insert($inserts);
        return back()->with('success','Inserted Record successfully');                  
    }

【问题讨论】:

  • 公司和部门是否已经存在?如果是这样,您会传递名称或 ID,如果没有,您是否有导入中的信息来创建它们?数据透视表上是否有任何额外的列需要填充?如果是这样,你会在导入中获得信息吗?
  • 是的,有部门和公司。例如 user_companies 数据透视表有 id、user_id、company_id。我需要填充 user_companies。 user_id 是从导入的数据中最后插入到 users 表的 id。 company_id 默认为“1”。是否可以在数据透视表中插入这样的内容?

标签: laravel laravel-5 laravel-5.5 maatwebsite-excel


【解决方案1】:

对于这种情况有一个更好的方法,使用 Laravel Eloquent Relationships,但是当使用 Laravel Database Query Builder 时,您应该获取最后插入的 id 并在“user_company”、“user_department”中的下一次插入中使用它。

$userinsert = DB::table('users')->insert($inserts);

$insertedId = $userinsert->id;

$insertsusercompany = [
'user_id' => $insertedId,
'value1' => 'somedata1',
'value2' => 'somedata2'
]

$usercompany = DB::table('user_company')->insert($insertsusercompany);

... 和其他表一样,但你应该使用 Eloquent 关系,因为它更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-04
    • 2016-04-02
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    相关资源
    最近更新 更多