在Sentinel(Laravel)中为每个种子用户添加激活



使用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); 
});

注意:在您的播种机中实现此代码之前

最新更新