Laravel + PostgreSQL Ltree

Как написать файл миграции для добавления поля типа ‘ltree’ (PostgreSQL)

Schema::create('table', function (Blueprint $table) {
....
$table->ltree('path');
}

Не работает.

Спасибо!

0

Решение

Посмотрите руководство по доступным функциям:
https://laravel.com/docs/5.1/migrations#creating-columns

Цель Laravel — совместимость, поэтому, если во всех поддерживаемых базах данных нет эквивалентных структур, они вряд ли будут поддерживать его изначально.

Вы можете запустить операторы SQL вручную, используя DB::statement('CREATE TABLE ...')

Просто помните, что ваше приложение будет заблокировано для postgres, что может быть не идеально.

1

Другие решения

Как быстрое решение используйте этот метод в своих миграциях:

public function up ()
{
Schema::create('locations', function (Blueprint $table) {
$table->increments('id');
$table->uuid('uuid')->unique();
$table->string('path', 255); // <--- my ltree field

$table->timestamps();
});

$query = 'ALTER TABLE locations ALTER COLUMN path TYPE "ltree" USING "path"::"ltree";';
\Illuminate\Support\Facades\DB::connection()->getPdo()->exec($query);
}
1

По вопросам рекламы [email protected]