迁移处理不支持的类型

时间:2017-08-02 12:54:48

标签: mysql laravel mariadb database-migration

我已经有了数据库设置,我想创建从空数据库到当前状态的迁移。

如何通过Laravel迁移处理不受支持的类型(如Point)?

我能想到的唯一解决方案是使用DB::statement并编写原始SQL。还有更好的办法吗?

此外,是否存在从现有数据库到Laravel迁移的任何转换器正确处理这些不受支持的类型?

1 个答案:

答案 0 :(得分: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