Дублировать на 2 поля - PullRequest
0 голосов
/ 01 июня 2019

Я ищу способ избежать дубликатов в Laravel.Например, у меня есть таблица с 2 полями, которые name и firstname.

Как управлять дубликатами на контроллере?Я новичок ...

enter image description here

Вот мой магазин функций ().

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

        ]);

        $exists = Auteur::where('name', $request->get('name'))->where('firstName', $request->get('firstName'))->count();

        if (!$exists){
            Auteur::create($request->all());
            return redirect()->route('auteurs.index')
                    ->with('success', 'save');
        }


    }

Я благодарю вас за вашу помощьи ваши объяснения.

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Если бы это было одно поле, вы могли бы использовать валидацию или сделать это поле уникальным, и об этом позаботились бы с небольшой обработкой ошибок. Однако с двумя полями, которые нужно проверить, может быть проще всего проверить, находится ли элемент в базе данных и дедуплицирует ли он оттуда. Так в методе store():

$exists = Auteur::where('name', $req->get('name'))->where('firstname', $req->get('firstname')->count();

if (!$exists){
    // create the new model, now that we know there is no duplicate in the database
    Auteur::create($request->all());
}
0 голосов
/ 01 июня 2019

Просто добавьте уникальный в ваше правило проверки.Если вы хотите проверить уникальность каждого поля в отдельности.

$request->validate([
                'name' => 'required|unique:auteurs,name|string|max:25',
                'firstname' => 'required|unique:auteurs,firstname|string|max:25'

        ]);

Here I hope the table name is `auteurs`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...