首页 > 解决方案 > Laravel - 如何使用 Maatwebsites 验证与 company_id 相关的唯一字段

问题描述

我使用 Laravel-5.8 和 Maatwebsite-3.1 导入了这个 excel:

class FirstGradeLevelSheetImport implements ToModel, WithHeadingRow, WithBatchInserts, WithValidation
{
    private $errors = []; // array to accumulate errors    
    use Importable, SkipsErrors; 

    public function model(array $row)
    {  
        $grade_data = [
            'grade_level_code'                  => $row['grade_level_code'] ?? '',
            'grade_level_name'                  => $row['grade_level_name'],
            'company_id'                        => Auth::user()->company_id,
            'created_by'                        => Auth::user()->id,
            'created_at'                        => date("Y-m-d H:i:s"),
            'is_active'                         => 1,   
        ];        

       $grade = HrGradeLevel::create($grade_data);        
    } 

    // this function returns all validation errors after import:
    public function getErrors()
    {
        return $this->errors;
    }    

    public function rules(): array
    {
        return [
            'grade_level_code' => [
                'required',
                'min:2',
                'max:210',                               
            ],  
            'grade_level_name' => [
                'required',
                'string',
                'min:3',
                'max:80'               
            ],
        ];    
    }        
}

在文章https://docs.laravel-excel.com/3.1/imports/validation.html中,您只能验证一个字段是否唯一

如何验证grade_level_code 相对于company_id 是唯一的?

谢谢

标签: laravelmaatwebsite-excel

解决方案


推荐阅读