繁体   English   中英

如何仅对Laravel 5中数据库表中的特定记录使用唯一验证?

[英]How to use unique validation for only specific record in database table in Laravel 5?

我想,以验证特定的独特问题book_id它的意思是应该是唯一的只有特定的记录。

table: questions

$title = this is question 1

$book_id = 12

TRUE =如果$book_id = 16未发布question ,用户可以发布相同的question

显示错误 =如果question张贴$book_id = 12 ,用户无法发布。

这是我到目前为止所尝试的

"required|unique:questions,question,book_id".$book_id,
"required|unique:questions,question,book_id,!".$book_id,
"required|unique:questions,question,NULL,id,book_id,".!$book_id,

试试这条规则:

"required|unique:questions,question,NULL,id,book_id,".$book_id,

您可以进行如下自定义验证

    class CustomValidator extends \Illuminate\Validation\Validator {
      public function ValidatecheckQuestion($attribute, $value, $parameters) {

        $cnt = DB::table('questions')->where('title','=',$parameters[0])
                        ->where('book_id','=',12)
                        ->count();
        if($cnt==0)
            return false;
        else
            return true;                        
     }
  }

请参阅https://laravel.com/docs/5.0/validation#custom-validation-rules以了解如何准确使用自定义验证

您可能希望在创建期间将标题与数据库中questions表中的其他标题进行比较,如下所示:

'title' => 'unique:questions,title'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM