我正在使用laravel 5.6我有这张表
users_groups table
使用这些列user_id
引用users
自动增量ID和group_id
引用groups
表中的组自动增量ID
现在,我正在尝试将数据条目验证为两个列的唯一值,但表中的user_id
和group_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不存在。
请帮忙吗?
答案 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'))
],