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_PASSWORDHASH
는 bcrypt이며 사용자에 의해 생성되어야 합니다.
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 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
'programing' 카테고리의 다른 글
Mysql/Mariadb 스크립트를 debian에서 부팅할 때 어떻게 작동합니까? (0) | 2023.09.07 |
---|---|
Python 파일로 긴 상수 목록 가져오기 (0) | 2023.09.07 |
도커 + Laravel + Mariaadb를 다음을 방지하도록 구성하는 문제:SQLSTATE[HY000] [2002] 잘못된 인수 (0) | 2023.09.07 |
Oracle User가 없는 경우 생성 (0) | 2023.09.07 |
HTML에서 가로 인쇄 (0) | 2023.09.02 |