2017-08-03 182 views

回答

9

只要查看數據庫中的migrations表,就會有一個遷移文件名和批號值的列表。

假設你有以下結構,

id  migration           batch 

1  2014_10_12_000000_create_users_table     1 
2  2014_10_12_100000_create_password_resets_table  1 
3  2016_09_07_103432_create_tabel_roles     1 

如果你想只回滾2016_09_07_103432_create_tabel_roles遷移, 改變它的遷移批次值2這是在所有最高,然後就執行以下。

php artisan migrate:rollback 

這裏只有批量值爲2的表格會被回滾。現在對該表進行更改並運行以下控制檯命令。

php artisan migrate 

migrations表中的批量值定義了遷移的順序。當您回滾時,最先或最高批處理值的遷移先回滾,然後回滾其他回滾。因此,您可以更改數據庫中的值,然後回滾特定的遷移文件。

儘管這不是一個好主意,每次改變,因爲表結構之間關係的批號,我們可以利用這種情況下,對於某些情況下,單個表回滾不會違反表之間的完整性。

希望你能理解。

+1

感謝這個,它清除了東西。 @sagar gautam –

+0

@MartneyAcha我很高興你有解決你的問題乾杯! –

0

您可以嘗試使用--path =選項來定義您希望執行的特定子文件夾,並在其中放置特定的遷移。

或者你需要從DB和遷移表這是不理想的去除參考和表:/

0

如果你想創建另一個表,只需創建一個新的遷移文件。這是可行的。

如果您使用id, first_name, last_name創建名爲users_table的遷移。您可以創建一個遷移文件,如

public function up() 
    { 
     Schema::create('users', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('first_name',255); 
      $table->string('last_name',255); 
      $table->rememberToken(); 
      $table->timestamps(); 
     }); 
    } 
    public function down() 
    { 
     Schema::dropIfExists('users'); 
    } 

如果要添加另一個類似「status」的字段而不遷移:刷新。你可以創建一個像「add_status_filed_to_users_table」

public function up() 
{ 
    Schema::table('users', function($table) { 
     $table->integer('status'); 
    }); 
} 

另一個遷移文件並且不要忘記添加回滾選項:

public function down() 
{ 
    Schema::table('users', function($table) { 
     $table->dropColumn('status'); 
    }); 
} 

當您運行php artitsan migration遷移,它只是遷移新的遷移文件。

但是,如果您在第一個mgration文件(users_table)中添加了「狀態」並運行遷移。沒什麼可遷移的。您需要運行php artisan migrate:refresh

希望得到這個幫助。

3

首先,你應該創建一個migration文件爲您的表像:

public function up() 
    { 
     Schema::create('test', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('fname',255); 
      $table->string('lname',255); 
      $table->rememberToken(); 
      $table->timestamps(); 
     }); 
    } 

創建測試後文件夾中遷移文件夾,然後新建遷移移動/在測試文件夾,運行復制在您的終端/ cmd下面命令:

php artisan migrate --path=/database/migrations/test/ 

希望我的回答對你有用!!!

+0

謝謝。這正是我所期待的。 – sadiq

0

刪除表並從遷移表中刪除其記錄。

之後,你只需再次運行遷移:

php artisan migrate