2017-08-02 111 views
0

我已經有一個數據庫設置,我想創建從空數據庫到當前狀態的遷移。遷移處理不支持的類型

如何通過Laravel遷移來處理不受支持的類型(如Point)?

唯一我能想到的解決方案是使用DB::statement並編寫原始SQL。有沒有更好的方法?

此外,是否有任何轉換器從現有的數據庫到Laravel遷移,正確處理這些不受支持的類型?

+0

你能解釋一下不支持的類型嗎? –

+0

@SagarGautam請看看可用的列類型:https://laravel.com/docs/5.4/migrations – metalcamp

+0

@metalcamp所以,你有其他類型的列數據 –

回答

1

有一個包,能爲你做到這一點:https://github.com/shiftonelabs/laravel-nomad/

它有與此簽名的函數:

public function passthru($realType, $column, $definition = null) 
    { 
     return $this->addColumn('passthru', $column, compact('realType', 'definition')); 
    } 

,用於像

class CreateUsersTable extends Migration { 
    public function up() 
    { 
     Schema::create('users', function(Blueprint $table) 
     { 
      $table->increments('id'); 
      $table->passthru('citext', 'name'); 
      $table->passthru('citext', 'title')->nullable(); 
      $table->passthru('string', 'email', 'varchar(255)')->unique(); 
      $table->passthru('string', 'password')->definition('varchar(60)'); 
      $table->rememberToken(); 
      $table->timestamps(); 
     }); 
    } 

    public function down() 
    { 
     Schema::drop('users'); 
    } 
} 

它擴展了BaseBlueprint類並使用該功能addColumn https://laravel.com/api/5.2/Illuminate/Database/Schema/Blueprint.html#method_addColumn