Проверка Laravel: уникальное правило для возврата дублированной записи - PullRequest
0 голосов
/ 30 ноября 2018

Я нигде не нашел чистого способа того, что именно ищу, поэтому подумал попробовать здесь:

$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()) {
            //
        }

Итак, что я хотел бы сделать, это когда дубликат *Предоставляется 1004 *, что означает не только сбой, но и показывает мне, какой пользователь использует тот же test_id.

Возможно ли это на самом деле с помощью Валидации Laravel?

1 Ответ

0 голосов
/ 30 ноября 2018

Если я правильно понимаю, это то, что вы хотите достичь?

Обновление: возможно, вы хотите получить дублированного пользователя в представлении.

Обновление2: быстрый способ получить и вернуть дублированных пользователей, если таковые имеются.

(Примечание: Я не тестировал код, поэтому, возможно, потребуются небольшие корректировки)

$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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...