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

Laravel 8 unique validation rule doesn't work with user_id

我正在使用 Laravel 8 和 unique 验证规则来确保记录保持唯一性,我现在正在尝试扩展它以便它对每个用户也是唯一的,但是当扩展功能并以数组形式使用规则,它似乎没有验证用户 ID,而是给我违反了完整性约束。

所以我有一个名为 brands 的 table,这个 table 包含有问题的两列: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()

我错过了什么?

根据 documentation 你必须使用 ignore() 函数:

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

关于你的情况:

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