2013-04-20 3 views

답변

8

예, Schema BuilderMigrations을 사용합니다.

먼저 당신은 DB로 마이그레이션 테이블을 설치해야합니다

$ php artisan migrate:install 

다음 application/migrations에 PHP 파일을 만듭니다 마이그레이션

$ php artisan migrate:make create_users_table 

이를 만듭니다. 새 마이그레이션을 생성하고 실행해야합니다 당신은 지금 즉

<?php 

class Create_Users_Table 
{ 

    public function up() 
    { 
     Schema::create('users', function($table) 
     { 
      $table->increments('id'); 
      $table->string('username'); 
      $table->string('email'); 
      $table->string('phone')->nullable(); 
      $table->text('about'); 
      $table->timestamps(); 
     }); 
    } 

    public function down() 
    { 
     Schema::drop('users'); 
    } 

} 

원하는 설정을 가지고

$ php artisan migrate 

데이터베이스 구조를 변경할 때마다 사용하여 실행을 편집 할 수 있습니다 나중에.

<?php 

class Users_Table_Add_Hometown 
{ 

    public function up() 
    { 
     Schema::table('users', function($table) 
     { 
      $table->string('hometown'); 
      $table->drop_column('phone'); 
     }); 
    } 

    public function down() 
    { 
     Schema::table('users', function($table) 
     { 
      $table->string('phone')->nullable(); 
      $table->drop_column('hometown'); 
     }); 
    } 

} 

이제 두 마이그레이션이 당신이 users 포함하는 새 파일을 새 마이그레이션

$ php artistan migrate:make users_table_add_hometown 

을 만들 것 hometown 대신 phone의 새 열을 가지고 편집 할 말 , 하나는 테이블을 만들고 하나는 테이블을 수정합니다.

artisan migrate 명령은 시스템에 처음 사용되는 마이그레이션 만 수행 할만큼 똑똑합니다. 그래서 당신의 동료가 긴 휴가를 보낸 후 집으로 돌아오고 몇 가지 새로운 마이그레이션이 있었다면, 그는 떠난 후에 생성 된 것들만 자동으로 가져옵니다.

+0

한가지 더. create table의 정의에 약간의 오류가있을 때, 테이블은 데이터베이스에 생성되지만 마이그레이션을 롤백 할 때 drop (나는 수동으로 drop하기 위해 mysql에 가야한다.) 아이디어가 없습니까? –

+0

'up()'과'down()'마이그레이션 기능을 잘 설명하지 않았습니다. –

+0

또한 마이그레이션 파일 이름에서 날짜를 제거하지 않는 것이 중요합니다. 그들은 처형되는 순서를 결정합니다. –