我已经有了数据库设置,我想创建从空数据库到当前状态的迁移。
如何通过Laravel迁移处理不受支持的类型(如Point)?
我能想到的唯一解决方案是使用DB::statement
并编写原始SQL。还有更好的办法吗?
此外,是否存在从现有数据库到Laravel迁移的任何转换器正确处理这些不受支持的类型?
答案 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