wake-up-neo.com

Laravel : Wie füge ich den ersten Benutzer in der Datenbank ein?

Ich verwende Laravel (4.2)

Ich arbeite an einem Projekt mit einem Authentifizierungssystem. Ich muss einen ersten Benutzer in meine Benutzertabelle einfügen. Ich möchte das direkt mit einem SQL-Befehl machen (in Benutzer einfügen ....). Dieser erste Benutzer kann nicht mit den herkömmlichen Laravel-Methoden erstellt werden.

Dieser erste Benutzer wird mit der Methode auth :: Versuche identifiziert, nachdem er in die Tabelle eingefügt wurde. 

Wie füge ich diesen Benutzer in die MySQL-Tabelle ein? 

so etwas wie?

insert into  users (login, password) values ('admin', 'crypted password which can be later identified with laravel')
13
Dom

Ich mache es so:

seeder mit Handwerker herstellen:

php artisan make:seeder UsersTableSeeder

dann öffnen Sie die Datei und geben Benutzer ein:

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'User1',
            'email' => '[email protected]',
            'password' => bcrypt('password'),
        ]);
        DB::table('users')->insert([
            'name' => 'user2',
            'email' => '[email protected]',
            'password' => bcrypt('password'),
        ]);
    }
}

Wenn Sie eine zufällige Benutzerliste erstellen möchten, können Sie Fabriken verwenden:

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\User::class, 50)->create();
        /* or you can add also another table that is dependent on user_id:*/
       /*factory(App\User::class, 50)->create()->each(function($u) {
            $userId = $u->id;
            DB::table('posts')->insert([
                'body' => str_random(100),
                'user_id' => $userId,
            ]);
        });*/
    }
}

Dann in der Datei app/database/seeds/DatabaseSeeder.php die Kommentarzeichen auskommentieren oder in der Lauffunktion eine Zeile hinzufügen:

$this->call(UsersTableSeeder::class);

es wird so aussehen:

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->call(UsersTableSeeder::class);
    }
}

Am Ende laufen Sie:

php artisan db:seed

oder 

php artisan db:seed --class=UsersTableSeeder

Ich hoffe, dass jemandem helfen wird. PS: Dies wurde am Laravel 5.3 gemacht 

29
Angel M.

Wenn Sie das Kennwort eines Benutzers nicht sicher in einem Textformat in einem Repository oder auf Ihrem Server speichern möchten, sollten Sie einen Befehl erstellen, um Benutzer für Sie zu erstellen.

Siehe Laravel -Dokumente: https://laravel.com/docs/5.6/artisan#generating-commands

Fügen Sie in der Griffmethode Folgendes hinzu:

public function handle()
{
    $first_name = $this->ask('What is the first name?');
    $last_name = $this->ask('What is the last name?');
    $email = $this->ask('What is the email address?');
    $password = $this->secret('What is the password?');

    AdminUser::create([
        'first_name' => $first_name,
        'last_name' => $last_name,
        'email' => $email,
        'password' => bcrypt($password)
    ]);

    $this->info("User $first_name $last_name was created");
}

Sie können den Befehl dann vom Server aus ausführen und haben nichts in einem textbasierten Format gespeichert!

5
Jammer

Finden Sie eine Lösung auf der Website

http://connectonline.in/add-new-user-to-laravel-database/

Bitte überprüfen Sie die obige URL.

Mit dem PHP Bastler Tool könnten wir einen neuen Benutzer direkt in die Datenbank aufnehmen.

$user = new App\User();
$user->password = Hash::make('password here ');
$user->email = 'proposed [email protected]';
$user->save();
5
Selestin Thomas

Um das Kennwort einzugeben, öffnen Sie das Terminal im Stammverzeichnis Ihres Projekts. __ Schreiben Sie dann php artisan tinker. Dann echo Hash::make('password');

3
despotbg

Der sinnvollste Weg ist die Verwendung von DatabaseSeeder für eine solche Aktion. 

Ich verwende ein Beispiel direkt aus der Dokumentation:

class DatabaseSeeder extends Seeder {

    public function run()
    {
        $this->call('UserTableSeeder');

        $this->command->info('User table seeded!');
    }

}

class UserTableSeeder extends Seeder {

    public function run()
    {
        DB::table('users')->delete();

        User::create(array('login' => 'admin', 'password' => Hash::make('secret')));
    }
}

Nach dem Erstellen einer solchen Sämaschine können Sie nach php artisan migratephp artisan db:seed ausführen, und Ihr 1. Benutzer wird erstellt

Referenz: Datenbankseeding in Laravel

2

In Laravel 5.6.39 mache ich Folgendes:

$user = new App\User();
$user->name = 'dhrubo';       //write whatever name you want
$user->password = Hash::make('dhrubo');    // write the password you want
$user->email = '[email protected]';        // write the email you want
$user->save();
1
Dhrubo Saha

Geben Sie die erforderlichen Werte in die .env-Datei ein.
INITIAL_USER_PASSWORDHASH ist bcrypt und muss von den Benutzern irgendwie generiert werden.
Ihre Bewerbung sollte einen einfachen Weg bieten. 

Sie möchten keine Klartext-Dateien in dieser Datei speichern.
Andernfalls würden Sie das Speichern in bcrypt in der Datenbank von vornherein für ungültig erklären.

INITIAL_USER_NAME=
INITIAL_USER_EMAIL=
INITIAL_USER_PASSWORDHASH=

Dann wie in den anderen Antworten vorgeschlagen, bevor Sie eine Sämaschine verwenden:
php artisan make:seeder UsersTableSeeder

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
  /**
   * Run the database seeds.
   *
   * @return void
   */
  public function run()
  {
    DB::table('users')->insert([
      'name' => env('INITIAL_USER_NAME'),
      'email' => env('INITIAL_USER_EMAIL'),
      'password' => env('INITIAL_USER_PASSWORDHASH'),
    ]);
  }
}

Geben Sie den Samen dann in die Datei database/seeds/DatabaseSeeder.php ein, damit er bei jedem vollständigen Samenlauf aufgerufen wird:

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
      $this->call([
        UsersTableSeeder::class
      ]);
    }
}

Dann:
composer dump-autoload

Und zum Schluss noch einen manuellen Seed Call:
php artisan db:seed

1
Martin Eckleben