首页 > 解决方案 > laravel 中唯一的验证规则

问题描述

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

我想要的是字段“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)
               ]
       ],

标签: laravelvalidationlaravel-validation

解决方案


我认为问题在于您==在 sql 中使用了比较器=。我建议您使用的另一个解决方案是制作Rule文件。这是一个指南如何创建自定义验证

在passes方法中你可以使用这样的东西

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;
   }
}

推荐阅读