Как написать файл миграции для добавления поля типа ‘ltree’ (PostgreSQL)
Schema::create('table', function (Blueprint $table) {
....
$table->ltree('path');
}
Не работает.
Спасибо!
Посмотрите руководство по доступным функциям:
https://laravel.com/docs/5.1/migrations#creating-columns
Цель Laravel — совместимость, поэтому, если во всех поддерживаемых базах данных нет эквивалентных структур, они вряд ли будут поддерживать его изначально.
Вы можете запустить операторы SQL вручную, используя DB::statement('CREATE TABLE ...')
Просто помните, что ваше приложение будет заблокировано для postgres, что может быть не идеально.
Как быстрое решение используйте этот метод в своих миграциях:
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);
}