Laravel 8 唯一验证规则不适用于user_id



我使用Laravel 8和唯一验证规则来确保记录保持唯一,我现在正试图扩展它,使其对每个用户都是唯一的,但当扩展功能并以数组形式使用规则时,它似乎不会验证用户ID,反而会违反完整性约束。

因此,我有一个名为brands的表,该表包含两个有问题的列:branduser_id,我需要确保在存储记录时,品牌相对于brand列是唯一的,并且登录用户的ID是提出请求的ID,例如:

两个用户可以拥有相同的品牌,但一个用户不能拥有同一品牌的倍数。

$validator = Validator::make($request->all(), [
'brand' => [
'required',
'string',
Rule::unique('brands')->where(function ($query) {
return $query->where('user_id', Auth::id());
})
],
'url' => 'required|string',
'telephone' => 'required|string|min:11|max:11'
]);

我也试过:

'brand' => 'required|string|unique:brands,brand,user_id,' . Auth::id()

我错过了什么?

根据文档,您必须使用ignore()函数:

Rule::unique('users')->ignore($user->id),

关于您的案例:

Rule::unique('brands')->ignore($user->id, 'user_id'),

相关内容

  • 没有找到相关文章

最新更新