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

Laravel(Lumen) unique validation rule for an array data when updating

我正在尝试对数据数组添加唯一规则,并希望在更新同一记录时忽略给定 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|url|unique:providers,link,' . $id,

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

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

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

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

        ]

我正在使用 Lumen 并使用相同的功能来创建和更新记录。 有办法实现吗?

你可以这样做:

$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;