播种用户时如何创建默认登录用户帐户?

ifu*_*ion 5 laravel

我想要一种拥有“默认登录”的方法,这样当我php artisan migrate:refresh在数据库上执行操作时,我可以在 PLUS 中播种一堆用户,并且每次都有一个具有相同电子邮件和密码的用户帐户。实现这一目标的最佳方法是什么?我认为也许拥有标准用户工厂加上创建默认用户工厂会起作用,但由于它使用相同的用户类,所以它只是创建一个新的标准用户。

用户工厂.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),
    ];
});
Run Code Online (Sandbox Code Playgroud)

默认用户工厂.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),
    ];
});
Run Code Online (Sandbox Code Playgroud)

ker*_*olz 3

在您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();
}
Run Code Online (Sandbox Code Playgroud)

注意create()工厂的方法可以采用属性数组。这些将覆盖工厂的定义。

确保在您的以下位置激活/运行此播种器DatabaseSeeder.php

public function run()
{
  $this->call(UserSeeder::class);
}
Run Code Online (Sandbox Code Playgroud)

编辑:应该不需要你的DefaultUserFactory.php,一切都可以通过你的处理UserFactory.php