2017-01-26 16 views
0

私はmaatwebsiteのExcelインポートライブラリを使用して従業員をデータベーステーブルにインポートしています。ただし、インポートするExcelファイルを選択するビューページでは、関連する会社テーブルのデータを表示する選択ドロップダウンがあるため、その特定の選択された会社は、現在インポートされているすべての従業員のComp_id外部キーに転記されます。それぞれCompanyEmployeeモデルでhasManybelongsToの関係を作成しました。 EmployeeControllerに送らLaravel maatwebsite選択フォームをインポートして記入してください

データ:

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' => .... /* ??????????????? 
       ]; 

私はEmployeeControllerにクラスとしてCompanyモデルを用意しました。

フィールド挿入'Comp_id' => ....に、選択したドロップダウンの値Comp_idを追加したいとします。関数内に$ company変数を作成して、選択したComp_idをすべての行に挿入できるようにするにはどうすればよいですか?それとも全く違う方法がありますか?

ありがとうございます。

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

ちょうどヒント:laravelのmass assignment機能を見ているあなたのビューを想定し

答えて

0

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

があなたのComp_idと選択してフォームを持っている、あなたのincomming requestからそれをつかむことができるはずです。

+0

応答@passioncoderに感謝します。コントローラーでコードを使用すると、エラー – PDevH

+0

... "デフォルト値のオブジェクトを空の値から作成しています"が表示されます。私は一括代入機能を見てきました。 'Comp_id'列は' Employee'モデルで 'protected $ fillable'として追加されています。 – PDevH

関連する問題