2015-12-20 5 views
7

Я использую Laravel (4.2)Laravel: Как вставить первого пользователя в базу данных

Я работаю над проектом с системой аутентификации. Мне нужно вставить первого пользователя в таблицу моих пользователей. Я хотел бы сделать это непосредственно с помощью команды sql (вставить в пользователей ...). Потому что этот первый пользователь не может быть создан с помощью традиционных методов laravel.

Этот первый пользователь будет идентифицирован с помощью метода auth :: попытки, после того, как он будет вставлен в таблицу.

Как вставить этого пользователя в таблицу mysql?

что-то типа?

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

Вы хотите выполнить 'SQL' из' Laravel'? Если нет, почему вы не выполняете этот 'SQL' из' phpMyAdmin' или 'MySql-console'. –

+0

Laravel работает с маршрутами, контроллерами и моделями. Предположим, вы уже установили их, прежде чем будете обращаться к своей базе данных. – Franco

+0

Franco: no У меня еще нет всех этих требований. Для других пользователей, конечно, у меня будет. Но для первого, как создать его в базе данных? – Dom

ответ

1

Самый разумный способ использования DatabaseSeeder для такого действия.

Я буду использовать пример непосредственно из документации:

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

После создания такого сеялка, после php artisan migrate вы можете запустить php artisan db:seed и ваш первый пользователь будет создан

Ссылка: Database seeding in Laravel

11

I Это делается так:

создание сеялки с мастером:

php artisan make:seeder UsersTableSeeder 

затем открыть файл и ввести пользователей:

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

Если вы хотите, чтобы генерировать случайный список пользователей, вы можете использовать заводы:

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

Затем в файле app/database/seed/DatabaseSeeder.php uncomment или добавить в функцию запуска a строка:

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

это будет выглядеть следующим образом:

use Illuminate\Database\Seeder; 

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

В конце вы бежите:

php artisan db:seed 

или

php artisan db:seed --class=UsersTableSeeder 

Я надеюсь, что кому-то поможет. PS: это было сделано на Laravel 5.3

+1

Отлично работает в 5.4, спасибо! – AJMaxwell

1

Найти решение в сайте

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

Пожалуйста, проверьте выше URL,

Использование PHP ремесленник Тинкер инструмент, который мы могли бы добавить нового пользователя непосредственно к данным база.

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

Если вы беспокоитесь о сохранении пароля пользователя небезопасном в текстовом формате в хранилище или на сервер я предлагаю создать команду для создания пользователей для вас.

См Laravel документы: https://laravel.com/docs/5.6/artisan#generating-commands

В методе ручки добавить что-то вроде этого:

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

Затем Вы сможете выполнить команду с сервера и вы не хранить что-либо в тексте основанный формат!

Смежные вопросы