首页 > 解决方案 > Laravel 生成用户数据

问题描述

我是 Laravel 的新手,我想为表用户生成假数据。知道这工作正常:

用户工厂.php

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];
});

UsersTableSeeder.php

public function run() {
        factory(App\User::class, 5)->create();
}

DatabaseSeeder.php

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

前面的代码在User表中生成了5行就OK了。

现在我想再生成一个额外的用户(除了已经生成的 5 行),其固定字段如下:

return [
        'name' => 'user test',
        'email' => 'user@mycompany.com',
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];

我必须把上面的代码放在哪里?我必须生成一个新的 UserFactory 吗?

标签: phplaravel

解决方案


您可以将以下代码放在现有代码之后的UsersTableSeeder.phpsrun()方法中:

factory(App\User::class)->create([
        'name' => 'user test',
        'email' => 'user@mycompany.com',
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ]);

您还可以使用'password' => bcrypt(USERPASSWORDHERE),创建 USERPASSWORDHERE 的加密字符串


推荐阅读