我在任何地方都没有找到我想要的东西的干净方法,因此可以尝试以下方法:
$validator = Validator::make($request->all(), [
'an_id' => 'unique:users,an_id',
'another_id' => 'unique:users,another_id',
'test_id' => 'unique:users,test_id',
]);
if ($validator->fails()) {
//
}
因此,我想做的是,当提供重复的test_id
时,不仅要失败,还要告诉我哪个用户使用相同的test_id
。
通过Laravel的验证这真的可能吗?
答案 0 :(得分:0)
如果我理解正确,这是您要实现的目标吗?
更新:也许您想在视图中获得重复的用户。
Update2:获取和返回重复用户(如果有)的快速方法。
(注意:我尚未测试代码,因此可能需要稍作调整)
$validator = Validator::make($request->all(), [
'an_id' => 'unique:users,an_id',
'another_id' => 'unique:users,another_id',
'test_id' => 'unique:users,test_id',
]);
if ($validator->fails()) {
//find the duplicated user
$duplicatedUserX = User::where(
'another_id', $request->input('another_id')
)->get();
$duplicatedUserY = User::where(
'test_id', $request->input('test_id')
)->get();
// add their test_id to error messagebag.
if(!empty($duplicatedUserX){
$validator->errors()
->add('duplicatedUserXId', $duplicatedUserX->id);
}
if(!empty($duplicatedUserY){
$validator->errors()
->add('duplicatedUserYId', $duplicatedUserY->id);
}
// Send duplicated users and messagebag back to View
return redirect()->back()
->with('dupUsers', [
'x' => $duplicatedUserX,
'y' => $duplicatedUserY,
])->withErrors($validator);
}