Laravel maatwebsite 导入并用 select 表格填写一列
Laravel maatwebsite import and fill a column with a select form
我正在使用 maatwebsite 的 Excel 导入库将员工导入数据库 table 并且效果很好。但是,在我 select 要导入 Excel 文件的查看页面上,我有一个 select 下拉列表显示来自相关公司 table 的数据,因此特定 selected 公司发布到所有当前导入的员工的 Comp_id
外键。我在各自的 Company
和 Employee
模型中创建了 hasMany
和 belongsTo
关系。
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'),
];
我正在使用 maatwebsite 的 Excel 导入库将员工导入数据库 table 并且效果很好。但是,在我 select 要导入 Excel 文件的查看页面上,我有一个 select 下拉列表显示来自相关公司 table 的数据,因此特定 selected 公司发布到所有当前导入的员工的 Comp_id
外键。我在各自的 Company
和 Employee
模型中创建了 hasMany
和 belongsTo
关系。
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'),
];