Laravel(Lumen)在更新时对数组数据的唯一验证规则

问题描述 投票:2回答:1

我试图在数据数组上添加一个唯一的规则,并希望在更新同一记录时忽略给定id的唯一规则。

在创建新记录时,我使用的是规则

$rules = [
            'provider.*.link' => 'required|url|unique:providers,link',
        ];

我的数据数组看起来像

 [provider] => [
                [0] =>[
                       [link] => http://mysite.local/1
                [1] =>[
                       [link] => http://mysite.local/1
              ]

哪个工作正常。但是,当更新相同的数据时,我无法弄清楚如何忽略对其各自ID的唯一规则。

当没有像这样的数组时,我知道该怎么做

'link' => 'required|email|unique:providers,link,' . $id,

但是当数据是数组时不确定如何使用它。

我的更新数据数组看起来像

 [provider] => 
        [
            [0] =>
                [
                    [id] => 3
                    [link] => http://mysite.local/1
                ]

            [1] =>
                [
                    [id] => 4
                    [link] => http://mysite.local/1
                ]

        ]

我正在使用流明并使用相同的功能来创建和更新记录。有没有办法实现这个目标?

laravel validation lumen-5.4
1个回答
3
投票

你可以这样做:

$rules = [
    ....
];

$providers = request('provider');
for ($i = 0; $i < count($providers); $i++) {
    $rules['provider.' . $i . '.link'] = 'required|url|unique:providers,link,' . $providers[$i]['id'];
}

return $rules;
© www.soinside.com 2019 - 2024. All rights reserved.