Laravel의 데이터베이스 시딩
이 게시물은 시리즈의 일부입니다. 우리는 Laracasts의 Scratch 시리즈에서 Laravel 8을 따라 도전하면서 Blog project을 빌드하고 있습니다.
개발 중에 우리는 종종
php artisan migrate:fresh
명령을 실행하여 데이터베이스를 새로 고치고 스키마에 대한 변경 사항을 적용합니다. 이 명령은 데이터베이스에서 모든 데이터를 삭제합니다. 데이터를 수동으로 계속해서 데이터베이스에 다시 쓰는 것은 매우 번거롭습니다. Laravel은 Database seeder의 형태로 이 문제에 대한 매우 편리한 솔루션을 제공합니다.데이터베이스 시더는 데이터베이스 테이블에 대한 레코드 생성을 담당하는 PHP 클래스입니다. 이러한 시더 클래스는
databases/seeders
디렉토리에 저장됩니다. 이 디렉토리에는 기본적으로 파일DatabaseSeeder.php
에 시드 클래스가 있습니다. 이 클래스를 검사하면 내부에 코드가 있는 메서드run()
가 있습니다.// \App\Models\User::factory(10)->create();
이 코드에는 아직 익숙하지 않은 메서드
factory()
가 있습니다. 그러나 이 코드는 users
테이블에 대해 10개의 레코드를 생성하는 것처럼 들립니다. 문제는 이 코드를 실행하는 방법입니다. Laravel에는 이에 대한 명령php artisan db:seed
이 있습니다.먼저 seeder 클래스에서 해당 줄의 주석 처리를 제거한 다음
php artisan db:seed
명령을 실행합니다. 이제 users
테이블에 10개의 레코드가 있는 것을 볼 수 있습니다. 명령을 다시 실행하면 이전 레코드를 삭제하지 않고 10개의 레코드가 더 추가됩니다. 이를 방지하기 위해 새 데이터를 쓰기 전에 테이블을 비울 수 있습니다. 사용자를 생성하는 코드 앞에 이 줄User::truncate();
을 작성합니다.\App\Models\User::truncate();
\App\Models\User::factory(10)->create();
새로 고침 명령 끝에
--seed
옵션을 추가하여 데이터베이스를 새로 고친 직후에 시드할 수 있습니다.php artisan migrate:fresh --seed
참고: 이 게시물은 Blog Project 에 대한 자세한 내용으로 곧 업데이트됩니다.
Reference
이 문제에 관하여(Laravel의 데이터베이스 시딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/arifiqbal/database-seeding-in-laravel-4do0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)