уникальный столбец семян лавры игнорирует повторяющиеся записи - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть Сеялка в Laravel

public function run()
    {
        $user = App\Admin::create([

            'first_name'     => 'first',
            'last_name'    => 'last',
            'phone'    => '',
            'email'    => 'mail@gmail.com',
        ]);
    }

в этом письме уникально,

php artisan db:seed

при первом запуске ввода записей в базу данных при повторном запуске егопоказывает дублирующую запись.

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'mail@gmail.com' for key 'email'

у меня есть возможность игнорировать это .?

Ответы [ 4 ]

1 голос
/ 02 апреля 2019

Попробуйте обновлять базу данных перед каждым запуском. Импортировать с:

использовать Illuminate \ Foundation \ Testing \ RefreshDatabase;

... и поместите это наверху своего класса:

использовать RefreshDatabase;

(От: https://laravel.com/docs/5.8/database-testing#resetting-the-database-after-each-test)

0 голосов
/ 17 апреля 2019

У нас есть возможность проверить, существует ли данное электронное письмо в таблице.

public function run(){
            $admin = DB::table('admins')->where('email', '=', 'mail@gmail.com')->first();

            if ($admin === null) {
                // user doesn't exist
                $user = App\Admin::create([

                    'first_name'     => 'Walter',
                    'last_name'    => 'Brown',
                    'phone'    => '',
                    'email'    => 'admin@gmail.com',
                    'password' => Hash::make('Admin123'),
                    'is_active'    => 1,
                    'remember_token' => str_random(10)
                ]);
             }
        }
0 голосов
/ 02 апреля 2019

Простой способ заполнить вашу базу данных - создать фабрику, а затем запустить сеялку, используя эту фабрику.

Создание фабрики, обычно в каталоге data / factory:

$factory->define(App\Admin::class, function (Faker\Generator $faker) {
    return [
        'first_name'    => $faker->firstName,
        'last_name'     => $faker->lastName,
        'phone'         => $faker->phoneNumber,
        'email'         => $faker->email
    ];
});

А затем запустите сеялку:

factory(Admin::class, 20)->create();

Этот пример создаст 20 пользователей и сохранит их.

Приведенный выше пример использует Faker для генерации случайных данных, https://github.com/fzaninotto/Faker

0 голосов
/ 02 апреля 2019

Вы можете решить эту проблему двумя способами:

1) Либо удалить ограничение уникального ключа из столбца электронной почты в базе данных (не рекомендуется)

2) Использовать библиотеку Faker для создания уникального адреса электронной почты -https://github.com/fzaninotto/Faker

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