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

Я использую Laravel (4.2)

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

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

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

что-то вроде?

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

Ответ 1

Я делаю это так:

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

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 раскомментируйте или добавьте в функцию запуска строку:

$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

Ответ 2

Для пароля откройте терминал в корне вашего проекта. Затем напишите php artisan tinker. Затем echo Hash::make('password');

Ответ 3

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

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

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

Используя инструмент php artisan tinker, мы можем добавить нового пользователя непосредственно в базу данных.

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

Ответ 4

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

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

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

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

Затем вы можете запустить команду с сервера, и вы ничего не сохранили в текстовом формате!

Ответ 5

Поместите необходимые значения в файл .env.
INITIAL_USER_PASSWORDHASH является bcrypt и должен каким-то образом генерироваться пользователями.
Ваше приложение должно предоставить простой способ.

Вы не хотите сохранять текстовые файлы в этом файле.
В противном случае вы бы аннулировали сохранение его в bcrypt в базе данных.

INITIAL_USER_NAME=
INITIAL_USER_EMAIL=
INITIAL_USER_PASSWORDHASH=

Затем, как предлагается в других ответах, перед использованием сеялки:
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'),
    ]);
  }
}

Затем вы должны ввести seed в файл database/seed/DatabaseSeeder.php, чтобы он вызывался при каждом полном запуске seed:

<?php

use Illuminate\Database\Seeder;

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

Затем:
composer dump-autoload

И, наконец, для одного ручного вызова семян:
php artisan db:seed

Ответ 6

Наиболее разумным способом является использование 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 и ваш 1-й пользователь будет создан

Ссылка: Поселение базы данных в Laravel

Ответ 7

В Laravel 5.6.39 я делаю следующее:

$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();