2013-04-20 38 views

回答

8

是的,使用Schema BuilderMigrations

首先,你需要在遷移表安裝到DB:

$ php artisan migrate:install 

然後創建一個遷移

$ php artisan migrate:make create_users_table 

這將在application/migrations創建一個PHP文件。現在,您可以編輯它擁有你想要的設置,即

<?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 

您更改數據庫結構每次執行它,你必須創建一個新的遷移和執行它之後。

說你要users有一個新列的hometown代替phone您需要創建一個新的遷移

$ php artistan migrate:make users_table_add_hometown 

和編輯新的文件包含

<?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'); 
     }); 
    } 

} 

你現在有兩個遷移,創建表格和修改表格。

artisan migrate命令足夠聰明,只能執行系統中新增的遷移。因此,如果您的一個同事在長假結束後回家,並且有一些新的遷移,它將自動只導入離開後創建的那些遷移。

+0

還有一件事。當create table的定義中有一些錯誤時,表被創建到數據庫中,但是當我回滾遷移時不會刪除(我必須去mysql手動刪除它)。任何想法? – 2013-04-21 10:01:23

+0

我已經添加了up()和down()遷移的能力(沒有很好的記錄)。 – 2013-04-21 10:14:58

+0

此外,重要的是不要從遷移文件名中刪除日期。他們決定他們正在執行的順序。 – 2013-04-21 10:17:52

相關問題