Laravel(Lumen) уникальное правило проверки данных массива при обновлении

Я пытаюсь добавить уникальное правило в массив данных и хочу игнорировать уникальное правило для данного идентификатора при обновлении той же записи.

При создании новой записи я использую такие правила, как

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

и мой массив данных выглядит

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

который отлично работает Но при обновлении одних и тех же данных я не могу понять, как игнорировать уникальные правила для их идентификаторов.

Я знаю, как это сделать, когда нет такого массива, как

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

но не уверен, как использовать его, когда данные являются массивом.

Мой массив данных обновления выглядит так

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

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

        ]

Я использую Lumen и использую ту же функцию для создания и обновления записей. Есть ли способ добиться этого?

1 ответ

Решение

Вы могли бы сделать это:

$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;
Другие вопросы по тегам