내 응용 프로그램에는 사전 등록 된 데이터 집합이 필요합니다. 그래서 응용 프로그램을 설정할 때 데이터베이스에 삽입해야합니다.Laravel : 프로덕션 데이터를위한 마이그레이션 및 시드
- Database migrations :
Laravel 는 두 가지 메커니즘 제안 ". 그들은 팀이 데이터베이스 스키마를 수정하고 현재 스키마 상태에 대한 최신 정보를 받아 볼 수 있도록"을
- Database seeding : "Laravel에는 시드 클래스를 사용하여 데이터베이스에 테스트 데이터를 입력하는 간단한 방법이 포함되어 있습니다."
이 설명을 읽었을 때 이들 해결책 중 어느 것도 적합하지 않은 것으로 보입니다.
비슷한 질문은 asked on stackoverflow과 answered입니다. 대답은 데이터베이스 시더를 사용하여 현재 환경을 탐지하여 데이터베이스를 채우는 것을 제안합니다.
<?php
class DatabaseSeeder extends Seeder {
public function run()
{
Eloquent::unguard();
if (App::environment() === 'production')
{
$this->call('ProductionSeeder');
}
else
{
$this->call('StagingSeeder');
}
}
}
물론이 솔루션이 작동합니다. 그러나 나는 이것을 수행하는 올바른 방법이라고 확신하지 못합니다. 왜냐하면 시이더를 사용하여 데이터를 삽입하면 마이그레이션 메커니즘 (데이터베이스 업그레이드, 롤백 ...)에 의해 제공되는 모든 이점을 잃어 버리기 때문입니다. 이 경우 모범 사례입니다.
Laravel에서 마이그레이션은 데이터 관리가 아닌 스키마 관리에 관한 것입니다. 시더는 테스트 데이터를 제공하는 데 사용되지만 생산 데이터 로딩 메커니즘이 될 것이라고는 생각하지 않습니다. – warspite
@warspite 그래, 문서가 말하는 것입니다. 이것이 내가이 질문을하는 이유입니다. – gontard
어쩌면이 패키지가 도움이 될 것입니다 https://github.com/slampenny/SmartSeeder –