programing

Laravel : 데이터베이스에 첫번째 사용자를 삽입하는 방법

newsource 2023. 9. 7. 21:43

Laravel : 데이터베이스에 첫번째 사용자를 삽입하는 방법

Laravel(4.2)을 사용하고 있습니다.

저는 인증 시스템을 갖춘 프로젝트를 진행하고 있습니다.사용자 테이블에 첫 번째 사용자를 삽입해야 합니다.sql 명령어(사용자에 삽입...)로 직접 수행하고 싶습니다. 왜냐하면 이 첫 번째 사용자는 기존의 larravel 메서드로는 만들 수 없기 때문입니다.

이 첫 번째 사용자는 테이블에 삽입된 후 auth::attempts 메서드로 식별됩니다.

이 사용자를 mysql 테이블에 삽입하려면 어떻게 해야 합니까?

뭐 그런 거?

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

이런 식으로 하고 있습니다.

장인을 사용하여 씨더 만들기:

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' => 'user1@email.com',
            'password' => bcrypt('password'),
        ]);
        DB::table('users')->insert([
            'name' => 'user2',
            'email' => 'user2@email.com',
            '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,
            ]);
        });*/
    }
}

그런 다음 파일 앱/데이터베이스/씨즈/데이터베이스에서씨앗.php uncomment 또는 add in run 함수 a line:

$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

누군가에게 도움이 되었으면 좋겠습니다.추신: 이것은 Laravel 5.3에서 이루어졌습니다.

암호의 경우 터미널에서 프로젝트의 루트를 엽니다.

그다음달리기php artisan tinker;

그리고나서echo Hash::make('password');

다음 값을 에 놓습니다..env파일.

INITIAL_USER_PASSWORDHASHbcrypt이며 사용자에 의해 생성되어야 합니다.

https://bcrypt-generator.com/ 온라인 생성기 도구로 사용하여 응용 프로그램 외부에서 암호를 만들 수 있습니다.

응용프로그램이 더 쉬운 방법을 제공해야 합니다.

텍스트 암호를 저장하지 않으려는 경우env파일.

INITIAL_USER_NAME=
INITIAL_USER_EMAIL=
INITIAL_USER_PASSWORDHASH=

그런 다음 시드 배정기를 사용하기 전에 다른 답변에서 제시한 대로 다음과 같이 하십시오.

시드를 생성하려면 다음과 같이 하십시오.composer당신은 다음을 사용할 필요가 있을 것입니다.artiasn지휘.

php artisan make:seeder UsersTableSeeder

이 명령을 사용하면 다음에 위치한 시드 파일이 생성됩니다.database/seeds폴더.

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

편집해야 합니다.database/seeds/DatabaseSeeder.php꼭 확인하고,UsersTableSeeder::class메소드 내에서 커밋되지 않음run().

<?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변경 내용을 저장한 후 명령합니다.

당신은 안에 있는 모든 씨앗을 실행할 수 있습니다.DatabaseSeeder.php를 실행하여 파일을 만듭니다.artisan명령;

php artisan db:seed

또는 다음을 사용하여 하나의 시드만 실행할 수 있습니다.php artisan db:seed --class="UsersTableSeeder"지휘.

사용할 수도 있습니다.php artisan migrate:fresh --seed데이터베이스 테이블을 새로 마이그레이션하고 하나의 명령으로 테이블을 시드합니다.

php 장인 팅커 도구를 사용하면 데이터베이스에 직접 새로운 사용자를 추가할 수 있습니다.

$user = new App\User();
$user->password = Hash::make('password here ');
$user->email = 'proposed email@addresss.com';
$user->save();

사용자의 암호를 텍스트 형식으로 저장소 또는 서버에 안전하지 않게 저장하는 것이 걱정된다면 사용자를 위한 사용자를 만들기 위한 명령을 만드는 것이 좋습니다.

Laravel 문서 참조: https://laravel.com/docs/7.x/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");
}

그러면 서버에서 명령어를 실행할 수 있고 텍스트 기반 형식으로 저장된 것이 없습니다!

가장 합리적인 방법은 데이터베이스를 사용하는 것입니다.그런 행동을 위해 씨를 뿌립니다.

문서에서 직접 예제를 사용합니다.

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됩니다.됩니다.

참조 : Laravel에서의 데이터베이스 시드

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 = 'dhrubo@gmail.com';        // write the email you want
$user->save();

터미널에서 프로젝트의 루트를 엽니다.

에 입력합니다( 에 합니다 에 합니다 에 docker exec -it <container_name> bash).

그다음달리기php artisan tinker

그런 다음 다음 줄(한 줄)을 붙여넣습니다.

DB::table('users')->insert(['name' => ‘admin’, 'email' => ‘admin@email.com', 'password' => Hash::make('Admin@123'),]);

로그인 자격 증명은 다음과 같습니다.

  • 이름 : admin
  • 이메일 : admin@email.com
  • 암호:관리자@123

PS:: tinker치,행composer require laravel/tinker프로젝트의 루트에 있는 명령어(위에 명시된 대로 컨테이너에 들어 있음).

언급URL : https://stackoverflow.com/questions/34382043/laravel-how-do-i-insert-the-first-user-in-the-database