php - 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
。
解决方案
尝试将 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 中,如果架构有元素,则不能删除它。您应该在删除架构之前删除它们。
推荐阅读
- huggingface-transformers - 为什么用英语训练并应用于孟加拉语的 BPE 编码不返回未知标记?
- javascript - Typescript Material-UI Table重复代码问题
- google-drive-api - Google Drive 600 成员限制 - 我们离达到它还有多远?
- r - 如何打印仅将绘图面板内容保留在 ggplot2 中的绘图?
- xml - 无法从 JSON 数据中获取价值
- r - 如何从托管的 Git 存储库安装 R 包
- python - 尽管有 init 文件,为什么会发生 Module Not found 错误?
- flutter - LateInitializationError:字段“数据库”尚未初始化
- reactjs - React 和 ASP.NET Core 应用程序的身份验证和授权选择
- laravel - 当我尝试在 laravel 中添加 vue js 时显示错误 -> 错误:找不到模块 'webpack/lib/rules/DescriptionDataMatcherRulePlugin'