私はmaatwebsiteのExcelインポートライブラリを使用して従業員をデータベーステーブルにインポートしています。ただし、インポートするExcelファイルを選択するビューページでは、関連する会社テーブルのデータを表示する選択ドロップダウンがあるため、その特定の選択された会社は、現在インポートされているすべての従業員のComp_id
外部キーに転記されます。それぞれCompany
とEmployee
モデルでhasMany
とbelongsTo
の関係を作成しました。 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機能を見ているあなたのビューを想定し
応答@passioncoderに感謝します。コントローラーでコードを使用すると、エラー – PDevH
... "デフォルト値のオブジェクトを空の値から作成しています"が表示されます。私は一括代入機能を見てきました。 'Comp_id'列は' Employee'モデルで 'protected $ fillable'として追加されています。 – PDevH