У меня есть небольшое приложение Laravel, которое просто добавляет информацию о геометрии в базу данных. Я должен добавить данные в MySQL и PostgreSQL. Я уже выполнил часть MySQL, используя этот пакет . Сейчас я пытаюсь также перенести свою таблицу на PostgreSQL, но поскольку я использовал пакет, созданный специально для MySQL, я застрял в том, как мне следует управлять миграцией для обеих баз данных. Для PostgreSQL я нашел этот пакет, который может помочь мне добавить данные геометрии
Это мой класс миграции:
class CreateSpatialobjectTable extends Migration
{
public function up()
{
Schema::create('spatial_objects', function (Blueprint $table) {
$table->engine = "InnoDB";
$table->increments('id');
$table->string('name');
$table->string('description');
$table->geometry('geometry');
});
}
public function down()
{
Schema::dropIfExists('spatial_objects');
}
}
Я не помню правильно, но метод geometry
не работает с MySQL, если я не добавлю первый пакет в свое приложение Laravel.
А это моя модель:
use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialTrait;
class SpatialObject extends Model
{
use SpatialTrait;
public $tablename = "spatial_objects";
public $timestamps = false;
/**
* The attributes that are spatial fields.
*
* @var array
*/
protected $spatialFields = [
'geometry'
];
}
Обратите внимание, что SpatialTrait
предоставляется первым пакетом (для MySQL).
Конфигурация для обеих баз данных работает, я могу перейти на обе, но я застрял в геометрической части.
TL; DR: как перенести таблицу, содержащую столбец геометрии, в MySQL и PostgreSQL.