如何使唯一数组的自定义验证规则依赖于其他字段 laravel

Posted

技术标签:

【中文标题】如何使唯一数组的自定义验证规则依赖于其他字段 laravel【英文标题】:How to make Custom Validation rule for unique Array dependent on other field laravel 【发布时间】:2019-08-12 03:53:19 【问题描述】:

我正在开发 Laravel 5.6。我有 4 个依赖的唯一列,但不知道如何验证这些依赖列 这是我对独特约束的迁移:

$table->unique(array('lvl4','document_type','nature_id','type_id'),'u_coa_lvl4_asn_dnt_uk');

lvl4 是数组。

提前致谢

【问题讨论】:

【参考方案1】:

您可以尝试使用以下方式手动验证:

$data = [
    'lvl4' => 'Level 4',
    'document_type' => 'Some type',
    'nature_id' => 1,
    'type_id' => 7,
];

$validator = Validator::make($data, [
    'data.lvl4' => [
        'required',
        Rule::unique('your_table')->where(function ($query) use($data) 
            return $query->where('lvl4', $data['lvl4'])
                ->where('document_type', $data['document_type'])
                ->where('nature_id', $data['nature_id'])
                ->where('type_id', $data['type_id']);
        ),
    ],
]);

if($validator->fails()) 
    // it fails validation ...

这是未经测试的,但这样的东西应该适合你。

https://laravel.com/docs/5.6/validation#rule-unique

【讨论】:

以上是关于如何使唯一数组的自定义验证规则依赖于其他字段 laravel的主要内容,如果未能解决你的问题,请参考以下文章

如果值存在于另一个字段数组中,Laravel 验证规则

Vuelidate:根据其他复选框使字段可选(也应适用于自定义验证)

使用带有附加参数的自定义规则验证 Laravel 中的数组

具有唯一字段的 Laravel 验证服务

如何在vTiger crm 里加入字段的唯一性验证

如何使一个材料表列的编辑模式字段类型依赖于另一列的值,而不影响其他行?