laravel中独特的两列

问题描述 投票:0回答:2

我正在使用laravel 5.6我有这张桌子

users_groups table

使用这些列user_id引用users自动增量id和group_id引用groups表中的组自动增量id

现在我试图验证数据的输入是两个列的唯一值,但它不能是表中的user_idgroup_id相同。我找到了这段代码并试了一下:

    $validatedData = $request->validate([
        'user_id' => 'required|unique_with:users_groups,group_id',
        'group_id' => 'required|unique_with:users_groups,user_id',
    ]);

它给了我这个错误:

方法Illuminate \ Validation \ Validator :: validateUniqueWith不存在。

有什么帮助吗?

php laravel validation
2个回答
1
投票

验证数据库中的表的正确方法是使用unique:table name,column

对于你的情况应该是

    $validatedData = $request->validate([
    'user_id' => 'required|unique:users_groups,group_id',
    'group_id' => 'required|unique:users_groups,user_id',
]);

laravel docs


1
投票

我相信你要找的是这个:

// Haven't tried this code, but it should be pretty close to what you're looking for
use Illuminate\Validation\Rule;

$validatedData = $request->validate([
    'user_id' => [
        'required',
        Rule::unique('users_groups')->where(function ($query) {
            return $query->where('group_id', $request->group_id);
        })
    ],
    'group_id' => [
        'required',
        Rule::unique('users_groups')->where(function ($query) {
            return $query->where('user_id', $request->user_id);
        })
     ]
]);
© www.soinside.com 2019 - 2024. All rights reserved.