laravel中独特的两列

时间:2018-04-29 21:35:12

标签: php laravel validation

我正在使用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不存在。

请帮忙吗?

4 个答案:

答案 0 :(得分: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 :(得分: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);
        })
     ]
]);

答案 2 :(得分:1)

您可以使用此

      'user_id' => [
            'required',
            Rule::unique('users_groups')->where(function ($query) {
                return $query->where('group_id', \request()->input('group_id'));
            })
        ],
      'group_id' => [
                'required',
                Rule::unique('users_groups')->where(function ($query) {
                    return $query->where('user_id', \request()->input('user_id'));
                })
            ],

答案 3 :(得分:0)

以上所有答案都是正确的,代码仍然可以简化

'user_id' => [
        'required',
        Rule::unique('users_groups')->where('group_id', request('group_id'))
    ],
  'group_id' => [
            'required',
            Rule::unique('users_groups')->where('user_id', request('user_id'))
        ],