2015-12-20 20 views
7

Sto usando Laravel (4.2)Laravel: Come inserisco il primo utente nel database

Sto lavorando a un progetto con un sistema di autenticazione. Devo inserire un primo utente nella mia tabella utenti. Mi piacerebbe farlo direttamente con un comando sql (inserire negli utenti ....). Perché questo primo utente non può essere creato con i metodi tradizionali di laravel.

Questo primo utente verrà identificato con il metodo auth :: tentativi, dopo essere stato inserito nella tabella.

Come inserisco questo utente nella tabella mysql?

qualcosa come?

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

Vuoi eseguire il 'SQL' da dentro 'Laravel'? Se no, perché non stai eseguendo quel 'SQL' da' phpMyAdmin' o 'MySql-console'. –

+0

Laravel funziona con percorsi, controller e modelli Suppongo che li abbia già impostati prima di interrogare il database – Franco

+0

Franco: no Non ho ancora tutti questi requisiti. Per gli altri utenti, naturalmente, avrò. Ma per il primo, come crearlo nel database? – Dom

risposta

1

Il modo più ragionevole è utilizzare DatabaseSeeder per tale azione.

userò esempio direttamente dalla documentazione:

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'))); 
    } 
} 

Dopo aver creato tale seminatrice, dopo php artisan migrate è possibile eseguire php artisan db:seed e sarà creato il primo utente

Riferimento: Database seeding in Laravel

11

I Sto facendo in questo modo:

creazione di seminatrice con artigiano:

php artisan make:seeder UsersTableSeeder 

quindi si apre il file e si entra utenti:

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'), 
     ]); 
    } 
} 

Se si desidera generare elenco casuale di utenti, è possibile utilizzare Fabbriche:

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, 
      ]); 
     });*/ 
    } 
} 

Poi nel file app/database/semi/DatabaseSeeder.php uncomment o aggiungi in esecuzione funzione una riga:

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

essa sarà simile a questa:

use Illuminate\Database\Seeder; 

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

Alla fine si esegue:

php artisan db:seed 

o

php artisan db:seed --class=UsersTableSeeder 

spero possa aiutare qualcuno. PS: questo è stato fatto su laravel 5.3

+1

Funziona alla grande in 5.4, grazie! – AJMaxwell

1

trovare una soluzione nel sito web

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

prega di controllare sopra URL,

Utilizzando lo strumento php artigianale armeggiare potremmo aggiungere un nuovo utente direttamente ai dati base.

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

Se sei preoccupato di salvare la password di un utente non sicuro in un formato di testo a un repository o il server vi suggerisco di creare un comando per creare utenti per voi.

See laravel docs: https://laravel.com/docs/5.6/artisan#generating-commands

Nel metodo manico aggiungere qualcosa di simile:

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"); 
} 

si è poi in grado di eseguire il comando dal server e non hanno conservato nulla in un testo formato basato!