首页 > 解决方案 > 如何在 laravel 中应用规则来检查文件名是否唯一?

问题描述

在 laravel 8 中,如何使用验证来检查数组中提供的文件名是否唯一。

` "main": [
        {
            "content": "ABC",
            "filename": "recording_1",
            "code": "264",
            "parameters": ""
        },
        {
            "content": "XYZ",
            "filename": "recording_2",
            "code": "264",
            "parameters": ""
        } 

        ...more to come
]`

以上是请求结构。从那个请求中,我必须检查所有文件名应该是唯一的我怎样才能做到这一点?

标签: laravel

解决方案


您可以使用 distinct

$validator = Validator::make(
        [
            'main' =>
                [
                    [
                        "content" => "ABC",
                        "filename" => "recording_1",
                        "code" => "264",
                        "parameters" => ""
                    ],
                    [
                        "content" => "XYZ",
                        "filename" => "recording_1",
                        "code" => "264",
                        "parameters" => ""
                    ]


                ]
        ],
        ['main.*.filename' => 'distinct']
    );

然后你可以检查

if($validator->fails()){
        echo  "<pre>";
        print_r($validator->errors());
        exit();
    }

输出将是

Illuminate\Support\MessageBag Object
(
    [messages:protected] => Array
        (
            [main.0.filename] => Array
                (
                    [0] => The main.0.filename field has a duplicate value.
                )

            [main.1.filename] => Array
                (
                    [0] => The main.1.filename field has a duplicate value.
                )

        )

    [format:protected] => :message
)

参考:https ://laravel.com/docs/8.x/validation#rule-distinct


推荐阅读