如何解决Laravel - 根据条件使用 Maatwebsite Excel 导入更新表格
使用 Laravel-5.8 和 Maatwebsite-3.1,我有一个名为员工(员工)的表。
class FirstEmployeeSheetImport implements ToModel,WithBatchInserts,WithHeadingRow,SkipsOnError,WithValidation,SkipsOnFailure
{
use Importable,SkipsErrors,SkipsFailures;
public function model(array $row)
{
$this->department = $row['department'];
$employee_data = [
'employee_code' => $row['employee_code'],'company_id' => Auth::user()->company_id,'email' => $row['official_email'],'department_id' => $this->getDepartment(),];
$employee = Employee::create($employee_data);
}
public function getDepartment(){
if(!empty($this->department) || !$this->department){
return HrDepartment::where('dept_name',$this->department)->where('company_id',Auth::user()->company_id)->pluck('id')->first();
} else {
return 0;
}
}
}
我想使用 excel 上传来更新以下两 (2) 个字段:每个员工的电子邮件和部门 ID,其中:
company_id = Auth::user()->company_id AND employee_code = $row['employee_code']。
此外,它应该只对满足条件的人执行更新。我应该只执行更新而不是执行。
我如何实现这一目标?
谢谢
解决方法
您可以使用 ToCollection
将您的数据导入 $rows
,然后相应地更新您的数据。
class FirstEmployeeSheetImport implements ToCollection
{
public function collection(Collection $rows)
{
foreach ($rows as $row)
{
Employee::where('company_id',auth()->user()->company_id)
->where('employee_code',$row['employee_code'])
->update([
'email' => $row['email'],...
]);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。