Подтвердите уникальное имя и имя в Laravel - PullRequest
0 голосов
/ 25 апреля 2019

Я знаю, что предмет существует, но я пока не нашел решения.У меня есть таблица с именем players с двумя полями: name, firstname. Моя цель - не дублировать при вводе нескольких записей.

Я хочу получить этот результат.

Fostier | Alain 
Fostier | Jeremy 

Если у меня есть два раза Fostier |Ален, это не правильно.

Дублирующая система должна объединять только ID?Я попробовал следующее безуспешно.

public function store(Request $request)
{
    $request->validate([
        'name' => 'required|unique:players,name',
        'firstname' => 'required|unique:players,firstname',

    ]);
    Player::create($request->all());

    flashy('Valider');

    return redirect()->route('players.index')
        ->with('success', 'save');
}

1 Ответ

3 голосов
/ 25 апреля 2019

Вы можете использовать класс Illuminate\Validation\Rule для составной проверки, например:

use Illuminate\Validation\Rule;
...

$request->validate([
    'name' => ['required', Rule::unique('players', 'name')->where(function ($query) use ($request) {
        return $query->where('name','!=', $request->input('firstname'));
    })],
    'firstname' => ['required', Rule::unique('players', 'firstname')->where(function ($query) use ($request) {
        return $query->where('firstname', '!=', $request->input('name'));
    })],
]);

Это проверяет уникальность 'firstname', также проверяя, используется ли 'name', и также делает то же самое для 'name', проверяя 'firstname' с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...