使用laravel的数据库种子,我添加了10个随机用户,当我尝试与这些用户登录时,Sentinel会给我一个错误,即必须先激活该帐户,我想要的内容现在要(当我播种时(激活每个正在播种的用户,这是我的databaseseeder:
public function run()
{
factory(AppUser::class, 10)->create()->each(function($user) {
DB::table('activations')->insert([
'user_id' => $user->user_id,
'code' => str_random(24),
'completed' => '1'
]);
});
}
我遇到的问题是数据库中充满了随机用户和10个激活,但是所有用户ID均为0
在这里用户工厂:
$factory->define(AppUser::class, function (Faker $faker) {
static $password;
return [
'id' => random_int(100000, 999999),
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
];
});
添加一个激活的工厂:
$factory->define(AppActivation::class, function (Faker $faker) {
return [
'code' => str_random(24),
'completed' => '1'
];
});
并在用户模型中添加关系:
public function activation()
{
return $this->hasOne('AppActivation');
}
然后您可以这样做:
factory(AppUser::class, 10)->create()->each(function($user) {
$user->activation()->save(factory(AppActivation::class)->make());
});
它们在代码中实现的更轻松的方法是
AppModelsUser::factory(100)->create()->each(function($user) {
$users = Sentinel::findById($user->id);
$activation = Activation::create($users);
Activation::complete($users,$activation->code);
});
注意:在您的播种机中实现此代码之前