Laravel 验证:带回重复记录的唯一规则
Posted
技术标签:
【中文标题】Laravel 验证:带回重复记录的唯一规则【英文标题】:Laravel validation: unique rule to bring duplicated record back 【发布时间】:2019-05-02 14:04:02 【问题描述】:我在任何地方都没有找到我正在寻找的干净方法,所以想在这里尝试一下:
$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 的 Validation 实现吗?
【问题讨论】:
【参考方案1】:如果我理解正确,这是您想要实现的目标吗?
更新:也许您想在视图中获取重复的用户。
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);
【讨论】:
谢谢@hktang!如果another_id
失败了怎么办?
@thitami,希望对您有所帮助!我的想法是您可以分配 $dupUserForAnotherID 和 $dupUserForTestID 并将两者都发送到视图。注意,它可以是空值。然后您可以在视图上检索它。我希望有更优雅的方法来做到这一点。以上是关于Laravel 验证:带回重复记录的唯一规则的主要内容,如果未能解决你的问题,请参考以下文章