Laravel + PostgreSQL Ltree

时间:2016-12-20 21:08:21

标签: php postgresql laravel laravel-5.1 ltree

如何编写迁移文件以添加字段类型'ltree'(PostgreSQL)

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

不起作用。

谢谢!

2 个答案:

答案 0 :(得分:1)

查看可用功能的手册: https://laravel.com/docs/5.1/migrations#creating-columns

Laravel的目标是兼容性,因此除非所有受支持的数据库中都有相同的结构,否则它们本身不太可能支持它。

您可以使用DB::statement('CREATE TABLE ...')

手动运行SQL语句

请记住,您的应用程序将被锁定到可能不理想的postgres。

答案 1 :(得分: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);
}