Как создать учетную запись пользователя по умолчанию при заполнении пользователей? - PullRequest
1 голос
/ 16 апреля 2020

Я хочу, чтобы у меня был «логин по умолчанию», чтобы при вводе php artisan migrate:refresh в моей базе данных я мог посеять группу пользователей в ПЛЮС, чтобы каждый раз иметь учетную запись с одним и тем же адресом электронной почты и паролем. Каков наилучший способ достижения этого? Я подумал, что, возможно, будет работать стандартная фабрика пользователей плюс создание фабрики пользователей по умолчанию, но поскольку он использует тот же класс User, он просто создает нового стандартного пользователя.

UserFactory. php


/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\User;
use Faker\Generator as Faker;
use Illuminate\Support\Str;


$factory->define(User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
        'remember_token' => Str::random(10),
    ];
});

DefaultUserFactory. php


/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\User;
use Faker\Generator as Faker;
use Illuminate\Support\Str;

$factory->define(User::class, function (Faker $faker) {
    return [
         'name' => $faker->name,
         'email' => 'test@demo.com',
         'email_verified_at' => now(),
         'password' => bcrypt('demo123'), // password
         'remember_token' => Str::random(10),
    ];
});

Ответы [ 3 ]

1 голос
/ 16 апреля 2020

В вашем UserSeeder.php создайте пользователя по умолчанию (используя вашу фабрику) как раз перед тем, как посеять других пользователей:

public function run()
{
  // Create admin user
  $user = factory(User::class)->create([
    'name' => 'AdMiN',
    'email' => 'admin@admin.com',
    'password' => bcrypt('aDmIn'),
  ]);

  // Create 5 more users:
  factory(User::class, 5)->create();
}

Примечание : метод create() от фабрик может взять массив атрибутов. Они перезапишут определения с завода.

Убедитесь, что вы активировали / запустите эту сеялку в своем DatabaseSeeder.php:

public function run()
{
  $this->call(UserSeeder::class);
}

Редактировать: в вашем DefaultUserFactory.php не должно быть необходимости все может быть обработано через ваш UserFactory.php

0 голосов
/ 16 апреля 2020

Вы можете создать сеялку и импортировать указанного c пользователя.

а. Вы запускаете php artisan make:seeder CreateUser

b. Вставьте в метод run () данные о пользователе, которого вы хотите создать, например

    User::create([
         'name' => 'Sample Name',
         'email' => 'test@demo.com',
         'email_verified_at' => now(),
         'password' => bcrypt('demo123'), // password
         'remember_token' => Str::random(10),
    ]);

c. Вы запускаете каждый раз, когда запускаете миграцию php artisan db:seed --class= CreateUser

0 голосов
/ 16 апреля 2020

Просто создайте учетную запись перед заполнением вашей базы данных. php artisan migrate:refresh вам придется использовать другой метод migrate:refresh очищает вашу базу данных перед тем, как заполнять ее фальшивым пользователем. Попробуйте php artisan migrate:refresh --step=5 с правильным шагом для вашей ситуации.

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