首页 > 解决方案 > Laravel 5.6:使用迁移创建数据库模式

问题描述

我想使用迁移为我的数据库创建几个模式。我有这个代码:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSchemaAdministracion extends Migration
{
    public function up()
    {
        DB::unprepared("CREATE SCHEMA `administracion`");
    }

    public function down()
    {
        DB::unprepared('DROP SCHEMA `administracion`');
    }
}

我试过这种方式,但我得到: Invalid schema name: 7 ERROR: No schema has been selected

标签: phplaravelpostgresqllaravel-5

解决方案


尝试将 DB::statement 与 DB::raw 一起使用。

我用 Laravel 5.8 对此进行了测试。我想它也应该适用于早期版本。

\DB::statement(\DB::raw("CREATE SCHEMA administracion"));

然后,您可以将其与架构一起用作前缀。像这样:

Schema::create('administracion.mytable', function (Blueprint $table) {
    $table->bigIncrements('id');
    ...
});

回滚操作注意事项:考虑到在 postgres 中,如果架构有元素,则不能删除它。您应该在删除架构之前删除它们。


推荐阅读