我想要一种拥有“默认登录”的方法,这样当我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)
在您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
| 归档时间: |
|
| 查看次数: |
4377 次 |
| 最近记录: |