laravel验证:将重复记录带回的唯一规则

9ceoxa92  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(315)

我还没有找到一个干净的方式,我到底是在寻找,所以想在这里给一个尝试:

$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 .
通过拉威尔的验证,这真的可能吗?

aiazj4mn

aiazj4mn1#

如果我理解正确,这就是你想要达到的目标吗?
更新:也许你想在视图中得到重复的用户。
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);
}

相关问题