微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果Excel Upload中存在错误的休假类型名称,我该如何验证并停止上传

如何解决如果Excel Upload中存在错误的休假类型名称,我该如何验证并停止上传

我在Laravel-5.8中有一个项目,可以使用Maatwebsite执行excel上传

型号

class HrLeaveRequest extends Model
{
  protected $table = 'hr_leave_requests';

  protected $fillable = [
              'id','employee_id','leave_type_id','commencement_date',];
  public function employee()
  {
    return $this->belongsTo('App\Models\Hr\HrEmployee','employee_id');
  } 
  public function leavetype()
  {
    return $this->belongsTo('App\Models\Hr\HrLeaveType','leave_type_id');
  }
}

class HrLeaveType extends Model
{
    protected $table = 'hr_leave_types';
    protected $fillable = [
              'company_id','leave_type_name',];
}

Excel上传

    $this->staffid = $row['staff_id'];
    $this->leavetype = $row['leave_type'];

    return new HrLeaveRequest([
        'employee_id'                       => $this->getStaffId(),'leave_type_id'                     => $this->getLeaveType(),'commencement_date'                 => $this->transformDate($row['commencement_date']),]); 

  public function getStaffId(){
    return HrEmployee::where('employee_code',$this->staffid)->pluck('id')->first();
  }

  public function getLeaveType(){
    return HrLeaveType::where('leave_type_name',$this->leavetype)->pluck('id')->first();
  }

 public function transformDate($value,$format = 'Y-m-d')
 {
    try {
        return \Carbon\Carbon::instance(\PHPOffice\PHPSpreadsheet\Shared\Date::excelToDateTimeObject($value));
    } catch (\ErrorException $e) {
        return \Carbon\Carbon::createFromFormat($format,$value);
    }
 } 

public function rules(): array
{
    return [
        'staff_id' => 'required|max:15','leave_type' => 'required|max:255','commencement_date' => 'required',];
}  

leave_type_id是hr_leave_types中的外键

我已经用它了

'leave_type_id'                     => $this->getLeaveType(),

我观察到,假假类型名称错误时,上传仍会继续,并且会添加null。

我的意思是

'leave_type' => 'required|max:255',

未对其进行验证。

如果Excel中的假类型名称错误,如何验证并停止上传

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。