2014-04-11 4 views
3

나는 개발을 위해 PHP의 Laravel 프레임 워크를 사용하고 있습니다. 테이블 생성 조작을 위해 마이그레이션을 사용하고 싶습니다. 다음은 내가 찍은 단계는 다음과 같습니다laravel migrations를 사용하는 방법

  1. 내가 마이그레이션 파일을 생성 명령 php artisan migrate:make create_users_table와 그 업 기능의 마이그레이션을 만들고, 내 스키마를 기록한 후, 나는 그것을 실행하고이를 성공적으로 실행되었다.

  2. 그런 다음 동일한 마이그레이션을 다시 실행하여 결과적으로 '테이블 존재'오류가 표시됩니다.

  3. 그런데 롤백 기능을 사용하려고했지만 '롤백 할 수 없음'오류가 발생합니다.

    그래서 마이그레이션을 롤백하거나 마이그레이션 기능을 실행하는 방법. 또한 새로운 마이그레이션을 만들고 마이그레이션 파일을 작성할 때 이전 마이 그 레이션에 의해 작성된 테이블을 삭제하는 코드를 작성하고 php artisan migrate 명령으로 실행했습니다.이 모든 마이그레이션이 실행되었으므로 (이전의 경우에도) 오류가 표시됩니다. '테이블은 이미 존재한다'(분명하다).

그래서 지금은 특별한/특별한 마이그레이션을 수행하는 기능이 있습니까? 어떻게해야합니까?

+0

'작곡가 덤프 - 자동로드'를 실행 한 다음 다시 시도하십시오. 숙련 된 마이그레이션 : 롤백이 작동하지 않는 경우 재설정하십시오 (모든 마이그레이션을 롤백합니다) –

+0

매번 마이그레이션 파일을 만들고 모든 변경 사항에 대해 업 기능을 작성해야합니까? 또는 새로운 테이블이나 컬럼을 생성하고 마이그레이션을 사용해야하며 왜 사용 되는가? – user3522412

+0

마이 그 레이션은 soooo 유용합니다, 그들은 코드에 대한 자식/svn과 같은 데이터베이스에 대한 버전 제어입니다. 단일 마이 그 레이션 파일이없고 단순히 다시 작성하고자하는 경우가 아니라면, 새로운 파일을 작성하십시오. 제이슨이 당신에게 말했듯이 UP과 DOWN을 하나의 마이그레이션 파일에 넣었습니다. –

답변

3

artisan migrate:make으로 마이그레이션을 생성 할 때 updown 메소드를 작성해야합니다. down 메서드는 up 메서드가 수행하는 것의 반대 작업을 수행해야합니다. 당신이 거기에 속하지 않는 up 방법에 몇 가지 코드를 가지고있는 것처럼이 코드를 보지 않고 말을 열심히하지만

public function up() 
{ 
    Schema::create('users', function($table) 
    { 
     $table->increments('id'); 
     $table->string('username'); 
    }); 
} 

public function down() 
{ 
    // We DROP the table because we created it in the "up" method. 
    Schema::drop('users'); 
} 

그것은 나에게 소리. migrations 테이블을 지우는 것이 좋습니다 (레코드가 있거나 없을 수도 있음). 또한 마이그레이션을 통해 생성 한 테이블을 수동으로 삭제해야합니다. 그럼 당신은 신선한 시작할 수 있습니다.

dropIfExists을 사용하여 표가있는 경우에만 삭제할 수 있습니다.

public function down() 
{ 
    // Drop the table only if it exists. 
    Schema::dropIfExists('users'); 
} 
+2

특정 마이 그 레이션의 기능을 어떻게 실행하고 싶습니다.그 특정 마이 그 레이션 후, 나는 몇 가지 마이 그 레이션을 계속하고 싶었어, 그래서 어떻게 드롭 기능을 실행하는 – user3522412

0

laravel에서 1 마이그레이션을 생성 할 때 각 마이그레이션에는 'up()'및 'down()'메서드가 포함됩니다.

+) 'php artisan migrate'명령을 실행하면 up() 메소드가 실행됩니다.

+) down() 메소드는 "php artisan migrate"명령을 실행하기 전에 상태를 되돌릴 때 사용됩니다.

'php artisan migrate : refresh'명령을 사용하면 모든 이전을 롤백하고 excute 명령을 실행 한 후 'php artisan migrate'auto 명령을 사용해 볼 수 있습니다.

관련 문제