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')
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
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!
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();
Um das Kennwort einzugeben, öffnen Sie das Terminal im Stammverzeichnis Ihres Projekts. __ Schreiben Sie dann php artisan tinker
. Dann echo Hash::make('password');
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 migrate
php artisan db:seed
ausführen, und Ihr 1. Benutzer wird erstellt
Referenz: Datenbankseeding in Laravel
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();
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