2013-06-18 6 views
4

안녕하세요, 나는 마이그레이션을 통해 laravel에서 (일반적으로 DB로 작업하는) 테이블을 만드는 것에 대해 질문이 있습니다.Laravel, migrations 스키마 클래스

난 (행복 코드에서) 이런 일이 9 개 필드 테이블 "사용자"를 생성합니다

<?php 
     Schema::create('users', function($table) { 

     $table->increments('id'); 

     $table->string('username', 32); 
     $table->string('email', 320); 
     $table->string('password', 64); 

     $table->integer('role'); 

     $table->boolean('active'); 

     $table->timestamps(); 
    }); 

확인을 가지고,하지만 난이 콜백에 의해 혼란스러워지고 있어요. 우선 변수 "$ table"은 어떤 클래스의 인스턴스입니까? 누군가 여기서 일어난 일을 어떻게 설명 할 수 있습니까?

답변

9

음, 여기가 발생 방법은 다음과 같습니다

  1. 당신이 Schema::create() 전화, 당신이 인수로 전달 된 테이블의 이름에 연결된 Blueprint 객체를 생성한다.
  2. 두 번째 매개 변수 인 콜백은 이며 이전에 생성 된 Blueprint 개체를 $table 인수로 받아서 처리합니다.
  3. $table 개체에서 메서드를 호출하면 실제로 데이터베이스에 따라 Grammar 클래스로 연결됩니다. 즉, MySQL 데이터베이스를 사용하는 경우 MySqlGrammar 클래스를 사용합니다. 이렇게하면 사용하지 않는 데이터베이스에 대해 유효한 SQL을 얻을 수 있습니다. 걱정할 필요가 없습니다.
  4. 마지막으로 모든 명령을 실행하고 모든 작업을 수행합니다.

생성 된 실제 SQL 쿼리를 보려면 migrate 명령에 --pretend 옵션을 추가 할 수 있습니다. 파일에 저장하는 것이 좋습니다. 더 쉽게 읽을 수 있습니다. 예 :

php artisan migrate --pretend > app/storage/migration.sql 

이렇게하면 app/storage/migration.sql 파일로 저장됩니다.

관련 문제