Laravel 5.6:使用迁移创建数据库架构

时间:2018-09-21 18:57:50

标签: php laravel postgresql laravel-5

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

<?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`');
    }
}

我尝试过这种方式,但是得到了:无效的架构名称:7 ERROR: No schema has been selected

2 个答案:

答案 0 :(得分:1)

尝试将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中,如果包含元素,则不能删除该模式。您应该先删除它们,然后再删除架构。

答案 1 :(得分:0)

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

class CreateAdministracionTable extends Migration
{

  public function up()
  {
    Schema::create('administracion', function (Blueprint $table) {
      $table->increments('id');
      $table->string('name');
      $table->string('airline');
      $table->timestamps();
    });
  }


  public function down()
  {
    Schema::drop('administracion');
  }
}