2017-08-02 1 views
0

J'ai déjà une configuration de base de données et j'aimerais créer des migrations à partir d'une base de données vide vers l'état actuel.La migration gère les types non pris en charge

Comment gérer les types non pris en charge (comme Point) par migration Laravel?

Seule la solution à laquelle je pouvais penser consistait à utiliser DB::statement et à écrire du code SQL brut. Y a-t-il une meilleure façon?

De même, y a-t-il un convertisseur d'une migration DB à Laravel existante qui gère correctement ces types non pris en charge?

+0

Pouvez-vous expliquer les types non pris en charge? –

+0

@SagarGautam Veuillez regarder les types de colonne disponibles: https://laravel.com/docs/5.4/migrations – metalcamp

+0

@metalcamp Donc, vous avez un autre type de données de colonne –

Répondre

1

Il y a un paquet qui peut le faire pour vous: https://github.com/shiftonelabs/laravel-nomad/

Il a une fonction avec cette signature:

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

qui est utilisé comme

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

Il prolonge la BaseBlueprint classe et utilise la fonction addColumn https://laravel.com/api/5.2/Illuminate/Database/Schema/Blueprint.html#method_addColumn