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;
我正在尝试对数据数组添加唯一规则,并希望在更新同一记录时忽略给定 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;