laravel中唯一的验证规则

时间:2020-08-03 22:35:03

标签: laravel validation laravel-validation

我想对两个字段进行验证,我已经尝试过了,但是对我来说不起作用,正是我需要对两个字段进行验证。

我想要的是字段“ grado”和“ fk_nivel_academico”的名称不再重复

这是我数据库中的表:

-----------------------------------------------
id | grado    | fk_nivel_academico | fk_estado
1  | Primero  | 1                  | 1
2  | Segundo  | 1                  | 2

这是验证规则:

$validatedData = Validator::make(
       [
           'grado' => $this->grado
       ],
       [
           'grado' => [
               'required', 
               Rule::unique('grado')
                   ->where('fk_nivel_academico', '==', $this->fk_nivel_academico)
                   ->where('grado', '==', $this->grado)
               ]
       ],

1 个答案:

答案 0 :(得分:0)

我认为问题是您在SQL中使用==时使用了=比较器。 我建议您使用的另一种解决方案是制作一个Rule文件。 这是指南How to create custom validation

在passs方法中,您可以使用类似这样的内容

public function passes($attribute, $value)
{
   $table = Table::where('fk_nivel_academico', '=', $this->fk_nivel_academico)
   ->where('grado', '=', $this->grado)->get();

   if($table->count() == 0){
        return true;
   }
}