2017-06-30 40 views
-2

讓我說我已經在我的MySQL數據庫中有一張表,並且我想向它添加列。要做到這一點,我做它像下面這樣:在Laravel遷移中更改表格時,是否有更簡單的方法來設置列的順序?

Schema::table('mytable', function($table) { 
    $table->integer('my_special_integer')->after('previous_column'); 
    $table->text('my_special_text')->after('my_special_integer'); 
    $table->string('my_special_string')->after('my_special_text'); 
    /*Some many other field*/ 
    $table->string('my_last_column_to_add')->after('my_second_last_column'); 
} 

有沒有一種較少重複的方式,如果我只是想輸入一定以前的專欄後一堆列?

回答

0

不,後()只適用於sql AF​​TER sql語句。

ALTER TABLE table_name 
ADD COLUMN new_column 
AFTER  existing_column 
-1

您可以使用MySQL查詢與DB::statement改變遷移列像下面

public function up() 
{ 

DB::statement("ALTER TABLE mytable MODIFY COLUMN column_name1 AFTER column_name2"); 

} 
0

沒有辦法做到開箱的,但是,你可以做什麼像這樣:

$columns = [ 
     'my_special_integer' => 'integer', 
     'my_special_text'  => 'text', 
     'my_special_string'  => 'string', 
     'my_last_column_to_add' => 'string', 
]; 

$previous = 'previous_column'; 

foreach ($columns as $name => $type) { 
    $table->$type($name)->after($previous); 
    $previous = $name; 
} 

希望這有助於!

-1

試試這個,希望它可以幫助你找到正確的解決方案:

public function up() 
{ 

    DB::statement("ALTER TABLE example MODIFY COLUMN foo DATE AFTER bar"); 

} 

public function down() 
{ 

    DB::statement("ALTER TABLE example MODIFY COLUMN foo DATE AFTER bar"); 

} 
+0

我並不認爲這能起到什麼作用,除非你使用的是原始的SQL語句,而不是laravel幫手。 – cytsunny

相關問題