php - 复合唯一键验证 - laravel

标签 php validation laravel

内置验证器似乎无法实现,我应该如何在模型中实现此功能?

 $rules = [

            'user_id' => 'required|unique:service_details,user_id',
            'service_id'=>'required|unique:service_details,service_id'
         ];

以上将防止 user_idservice_id 独立重复,这不是我的要求

它会拒绝

(1,2)
(1,3)

因为 1 是重复的,但它应该被接受,因为我想要复合唯一键

最佳答案

复合唯一字段验证 is provided out-of-the-box in 5.0+ .我不能代表早期版本。

您基本上可以为您的唯一验证规则何时应用指定一个 where 子句。例如

'term'  => 'unique:terms,term,NULL,id,taxonomy,category'

这条规则说termterms 上应该是唯一的表,但仅在 taxonomy 的位置等于“类别”。

例如,它会防止重复“新闻”类别,但我仍然可以有一个“新闻”标签。


我不知道你的模式,但在你的情况下它会是这样的:

$user_id = Request::get('user_id', $default);
$service_id = Request::get('service_id', $default);  
// or another way of specifying the accompanying service/user ID for the where clauses

$rules = [
    'user_id' => 'unique:service_details,user_id,NULL,id,service_id,' . $service_id;
    'service_id' => 'unique:service_details,service_id,NULL,id,user_id,' . $user_id;
];

关于php - 复合唯一键验证 - laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29093061/

相关文章:

html - 拉拉维尔 | html - 如何根据数据库字段在表单中设置默认选择选项?

php - WooCommerce 订单页面添加客户角色自定义列

android - EditText Int number 验证 ID 号 0-1000

javascript - 向动态表单添加验证

laravel - HTAccess 将除特定 URL 之外的所有内容重定向到文件夹

mysql - 我如何对连续范围进行分组(mysql 5.7)

php - 使用php从像素计算图像大小(以英寸或dpi为单位)

php - 如何通过使用 join 2 次或更多次随机选择 2 行

php - MySQL数据库设计——关系表

forms - 具有子组件和验证的 Angular 2 嵌套表单