web-dev-qa-db-fra.com

Enregistrer manuellement un utilisateur dans Laravel

Est-il possible d'enregistrer manuellement un utilisateur (avec artisan?) Plutôt que via la page d'enregistrement d'authentification?

Je n'ai besoin que de quelques comptes d'utilisateurs et je me suis demandé s'il était possible de les créer sans avoir à configurer les contrôleurs d'enregistrement et les vues.

31
Matt Ellis

Je pense que vous voulez effectuer cette opération une fois pour toutes, vous n'avez donc pas besoin de quelque chose d'extraordinaire comme créer une commande Artisan, etc. Je suggère simplement d'utiliser php artisan tinker (excellent outil!) Et d'ajouter les commandes suivantes par utilisateur:

$user = new App\User();
$user->password = Hash::make('the-password-of-choice');
$user->email = '[email protected]';
$user->save();
57

Oui, vous pouvez facilement écrire une base de données seeder et ensemencer vos utilisateurs.

Oui, la meilleure option est de créer un semoir afin que vous puissiez toujours le réutiliser.

Par exemple, voici ma UserTableSeeder:

class UserTableSeeder extends Seeder {

public function run() {

    if(env('APP_ENV') != 'production')
    {
        $password = Hash::make('secret');

        for ($i = 1; $i <= 10; $i++)
        {
            $users[] = [
                'email' => 'user'. $i .'@myapp.com',
                'password' => $password
            ];
        }

        User::insert($users);
    }
}

Après avoir créé ce segment, vous devez exécuter composer dumpautoload, puis ajouter dans votre database/seeds/DatabaseSeeder.php:

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        $this->call('UserTableSeeder');
     }
}

Vous pouvez enfin utiliser php artisan db:seed --class=UserTableSeeder chaque fois que vous devez insérer des utilisateurs dans la table.

2
user2094178

Vous pouvez utiliser Model Factories pour générer deux comptes utilisateur. Ecrire un seeder fera aussi le travail.

1
oseintow

Ceci est un ancien post, mais si quelqu'un veut le faire avec une ligne de commande, dans Laravel 5. *, c'est un moyen simple: 

php artisan tinker

puis tapez (remplacez par vos données):

DB::table('users')->insert(['name'=>'MyUsername','email'=>'[email protected]','password'=>Hash::make('123456')])
0
I. Patrick