2016-07-05 9 views
1

내 데이터베이스에는 응용 프로그램에서 참조 용으로 사용되는 테이블이 여러 개 있습니다.하드 코딩 된 테이블의 Laravel 시드

예를 들어 State and State Abbreviation이라는 두 개의 열이 있고 50 개의 상태와 약어가 행으로 모두있는 테이블입니다.

State  | State Abbreviation 
Alabama  | AL 
Alaska  | AK 
... 

응용 프로그램의 새 버전을 시작할 때 이러한 테이블이 있어야하므로 Laravel에서 이러한 테이블의 시드를 작성하고 싶습니다.

이 데이터를 저장하고 이러한 시드기를 만드는 가장 좋은 방법은 무엇입니까?

+0

https://github.com/ggoforth/laravel-5-us-states-seeder/blob/master/StatesSeeder.php 당신이'dB 시도 되세요 ? https://laravel.com/docs/5.2/seeding – aynber

+0

예,하지만 위조 된 데이터 (시드러가 가장 일반적으로 사용되는 것임)보다는 하드 코딩 된 데이터를 시드하는 가장 좋은 방법을 찾아야합니다. – carte

+0

항상 사용했습니다. (Schema :: create) 다음에'DB :: table ('table') -> insert ($ data);'를 사용하면됩니다. – aynber

답변

2

씨앗받는 기계 그냥 테스트 데이터 이상 - 그리고 그들은 정적 데이터에 적합하다.

그냥 수동으로 시더를 만드는 데 시간이 너무 오래 걸릴하지 않습니다, 대신 바퀴를 재건, 당신은 ggoforth의이 의례를 사용할 수 있습니다 seed` :

<?php 

use App\State; 
use Illuminate\Database\Seeder; 
use Illuminate\Support\Facades\DB; 

class StatesSeeder extends Seeder { 

    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function run() 
    { 

     DB::table('states')->truncate(); 

     State::create(['name' => 'Alaska', 'code' => 'AK']); 
     State::create(['name' => 'Alabama', 'code' => 'AL']); 
     State::create(['name' => 'American Samoa', 'code' => 'AS']); 
     State::create(['name' => 'Arizona', 'code' => 'AZ']); 
     State::create(['name' => 'Arkansas', 'code' => 'AR']); 
     State::create(['name' => 'California', 'code' => 'CA']); 
     State::create(['name' => 'Colorado', 'code' => 'CO']); 
     State::create(['name' => 'Connecticut', 'code' => 'CT']); 
     State::create(['name' => 'Delaware', 'code' => 'DE']); 
     State::create(['name' => 'District of Columbia', 'code' => 'DC']); 
     State::create(['name' => 'Federated States of Micronesia', 'code' => 'FM']); 
     State::create(['name' => 'Florida', 'code' => 'FL']); 
     State::create(['name' => 'Georgia', 'code' => 'GA']); 
     State::create(['name' => 'Guam', 'code' => 'GU']); 
     State::create(['name' => 'Hawaii', 'code' => 'HI']); 
     State::create(['name' => 'Idaho', 'code' => 'ID']); 
     State::create(['name' => 'Illinois', 'code' => 'IL']); 
     State::create(['name' => 'Indiana', 'code' => 'IN']); 
     State::create(['name' => 'Iowa', 'code' => 'IA']); 
     State::create(['name' => 'Kansas', 'code' => 'KS']); 
     State::create(['name' => 'Kentucky', 'code' => 'KY']); 
     State::create(['name' => 'Louisiana', 'code' => 'LA']); 
     State::create(['name' => 'Maine', 'code' => 'ME']); 
     State::create(['name' => 'Marshall Islands', 'code' => 'MH']); 
     State::create(['name' => 'Maryland', 'code' => 'MD']); 
     State::create(['name' => 'Massachusetts', 'code' => 'MA']); 
     State::create(['name' => 'Michigan', 'code' => 'MI']); 
     State::create(['name' => 'Minnesota', 'code' => 'MN']); 
     State::create(['name' => 'Mississippi', 'code' => 'MS']); 
     State::create(['name' => 'Missouri', 'code' => 'MO']); 
     State::create(['name' => 'Montana', 'code' => 'MT']); 
     State::create(['name' => 'Nebraska', 'code' => 'NE']); 
     State::create(['name' => 'Nevada', 'code' => 'NV']); 
     State::create(['name' => 'New Hampshire', 'code' => 'NH']); 
     State::create(['name' => 'New Jersey', 'code' => 'NJ']); 
     State::create(['name' => 'New Mexico', 'code' => 'NM']); 
     State::create(['name' => 'New York', 'code' => 'NY']); 
     State::create(['name' => 'North Carolina', 'code' => 'NC']); 
     State::create(['name' => 'North Dakota', 'code' => 'ND']); 
     State::create(['name' => 'Northern Mariana Islands', 'code' => 'MP']); 
     State::create(['name' => 'Ohio', 'code' => 'OH']); 
     State::create(['name' => 'Oklahoma', 'code' => 'OK']); 
     State::create(['name' => 'Oregon', 'code' => 'OR']); 
     State::create(['name' => 'Palau', 'code' => 'PW']); 
     State::create(['name' => 'Pennsylvania', 'code' => 'PA']); 
     State::create(['name' => 'Puerto Rico', 'code' => 'PR']); 
     State::create(['name' => 'Rhode Island', 'code' => 'RI']); 
     State::create(['name' => 'South Carolina', 'code' => 'SC']); 
     State::create(['name' => 'South Dakota', 'code' => 'SD']); 
     State::create(['name' => 'Tennessee', 'code' => 'TN']); 
     State::create(['name' => 'Texas', 'code' => 'TX']); 
     State::create(['name' => 'Utah', 'code' => 'UT']); 
     State::create(['name' => 'Vermont', 'code' => 'VT']); 
     State::create(['name' => 'Virgin Islands', 'code' => 'VI']); 
     State::create(['name' => 'Virginia', 'code' => 'VA']); 
     State::create(['name' => 'Washington', 'code' => 'WA']); 
     State::create(['name' => 'West Virginia', 'code' => 'WV']); 
     State::create(['name' => 'Wisconsin', 'code' => 'WI']); 
     State::create(['name' => 'Wyoming', 'code' => 'WY']); 
     State::create(['name' => 'Armed Forces Africa', 'code' => 'AE']); 
     State::create(['name' => 'Armed Forces Americas (except Canada)', 'code' => 'AA']); 
     State::create(['name' => 'Armed Forces Canada', 'code' => 'AE']); 
     State::create(['name' => 'Armed Forces Europe', 'code' => 'AE']); 
     State::create(['name' => 'Armed Forces Middle East', 'code' => 'AE']); 
     State::create(['name' => 'Armed Forces Pacific', 'code' => 'AP']); 
    } 

} 
+1

상태가있는 일반 배열과 'State :: insert ($ states)'가 더 좋을 것입니다. – user2094178

1

내가 원시 SQL 사용합니다 :

class DatabaseSeeder extends Seeder 
{ 
    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function seed($table) 
    { 
     $this->command->info('Seeding '.$table); 
     $this->call($table.'TableSeeder'); 
    } 

    public function run() 
    { 
     DB::unprepared(file_get_contents(database_path('states.sql'))); 
    } 
} 

및 다음 SQL 파일 :

INSERT INTO `states` (`id`, `state`, `abbrev`) 
VALUES 
    (1,'Alabama', 'AL'), 
    (2,'Alaska', 'AK)...; 
+0

Laravel 시더 인터페이스를 사용하고 싶습니다. 아직 원시 SQL을 사용하는 방법이 있습니까? – carte

+0

씨어터 인터페이스 내부에 들어갑니다. –

+0

states.sql을 어디에 저장합니까? – carte