Laravel验证具有不同类别的唯一子语句

时间:2018-01-09 17:20:21

标签: laravel validation unique

我想使用以下代码确定 laravel 中唯一的字段:

这是表格product_subcategories的验证:

protected $rules = [
    ValidatorInterface::RULE_CREATE => [
        'name'                  => 'required|unique:product_subcategories|max:255',
        'product_categories_id' => 'required'
    ],
    ValidatorInterface::RULE_UPDATE => [
        'id'                    => 'required',
        'name'                  => 'required|unique:product_subcategories|max:255',
        'product_categories_id' => 'required'
    ]
];

但是我希望字段名称与product_categories_id是唯一的,例如,如果字段的名称相同但product_categories_id彼此不同,则它不可能是唯一的。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您可以指定要与规则的第二个参数进行比较的列。

protected $rules = [
    ValidatorInterface::RULE_CREATE => [
        'name'                  => 'required|unique:product_subcategories,name|max:255',
        'product_categories_id' => 'required'
    ],
    ValidatorInterface::RULE_UPDATE => [
        'id'                    => 'required',
        'name'                  => 'required|unique:product_subcategories,name|max:255',
        'product_categories_id' => 'required'
    ]
]

此示例将检查product_subcategories中是否存在具有相同name的任何其他字段。

对于更新,您可以使用第三个参数扩展它,该参数是您要忽略的名称的值。 (因此,您可以保存SubCategory而不更改其名称。)