2015-10-05 18 views
15

folgende ist mein mein 2015_09_14_051851_create_orders_table.php. Und ich möchte $ table-> integer ('category_id') ändern; als String mit neuer Migration.laravel migration table field type ändern

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateOrdersTable extends Migration { 

    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('orders', function(Blueprint $table) 
     { 
      $table->increments('id'); 
      $table->string('num'); 
      $table->integer('user_id'); 

      $table->text('store_name'); 
      $table->integer('store_name_publication'); 

      $table->string('postal_code', 255); 
      $table->string('phone_number', 255); 

      $table->text('title'); 
      $table->text('description'); 

      $table->string('list_image_filename1', 255); 
      $table->string('list_image_filename2', 255)->nullable(); 
      $table->string('list_image_filename3', 255)->nullable(); 
      $table->string('list_image_filename4', 255)->nullable(); 
      $table->string('list_image_filename5', 255)->nullable(); 

      $table->integer('term'); 

      $table->datetime('state0_at')->nullable(); 
      $table->datetime('state1_at')->nullable(); 
      $table->datetime('state2_at')->nullable(); 
      $table->datetime('state3_at')->nullable(); 
      $table->datetime('state4_at')->nullable(); 
      $table->datetime('state5_at')->nullable(); 
      $table->datetime('state6_at')->nullable(); 
      $table->datetime('state7_at')->nullable(); 
      $table->datetime('state8_at')->nullable(); 
      $table->datetime('state9_at')->nullable(); 
      $table->datetime('state10_at')->nullable(); 

      $table->integer('category_id'); 
      $table->integer('target_customer_sex'); 
      $table->integer('target_customer_age'); 

      $table->integer('payment_order'); 
      $table->integer('num_comment'); 
      $table->integer('num_view'); 
      $table->string('num_pop'); 

      $table->integer('money'); 
      $table->integer('point'); 

      $table->datetime('closed_at'); 
      $table->timestamps(); 
      $table->softDeletes(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('orders'); 
    } 

} 
+0

'$ Tabellen-> string ('category_id');' – aldrin27

+0

nein ich nur diese Art mit anderer Migrationsdatei ändern möge 2015_10_05_021049 _change_category_id_to_orders_table –

Antwort

19

Um einige Veränderungen an bestehenden db zu machen, können Sie Spaltentyp von change() in Migration ändern.

Dies ist, was Sie

Schema::table('orders', function ($table) { 
    $table->string('category_id')->change(); 
}); 

Bitte beachten Sie Lehre/dbal Abhängigkeit hinzufügen müssen tun könnte für weitere Informationen composer.json Sie es hier http://laravel.com/docs/5.1/migrations#modifying-columns

+1

Jetzt benutze ich Laravel 4.2 –

14

Die standard solution didn finden 't Arbeit für mich, wenn Sie den Typ von TEXT zu LONGTEXT ändern.

ich es so hatte:

public function up() 
{ 
    DB::statement('ALTER TABLE mytable MODIFY mycolumn LONGTEXT;'); 
} 

public function down() 
{ 
    DB::statement('ALTER TABLE mytable MODIFY mycolumn TEXT;'); 
} 

Dies ist eine Lehre Problem sein könnte. Weitere Informationen here.

Ein anderer Weg, es zu tun, ist die Zeichenfolge() -Methode, zu verwenden und den Wert in den Texttyp max Länge eingestellt:

Schema::table('mytable', function ($table) { 
     // Will set the type to LONGTEXT. 
     $table->string('mycolumn', 4294967295)->change(); 
    }); 
+2

Dies ist besonders nützlich für DECIMAL-Spalten. – dmmd

+1

Danke Mann, du hast meinen Tag gerettet) –

+1

Ich kann dieses Verhalten bestätigen. Um eine Spalte von Text zu Mediumtext zu ändern, musste ich folgendes tun: $ table-> string ('messages', 16777215) -> nullable() -> change(); – Antonio

0

für mich die Lösung nur mit dem Index

unsigned ersetzen vollständiger Code

Schema::create('champions_overview',function (Blueprint $table){ 
     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->integer('cid')->index(); 
     $table->longText('name'); 
    }); 


    Schema::create('champions_stats',function (Blueprint $table){ 
     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->integer('championd_id')->index(); 
     $table->foreign('championd_id', 'ch_id')->references('cid')->on('champions_overview'); 
    }); 
Verwandte Themen