postgresql 将php laravel sql代码转换为postgres

bkhjykvo  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(169)

我正在将一个用phplaravel编写的web应用程序重写为JavaScript堆栈。目前我正在将数据库模式(似乎是mysql)重写为postgres。
我对下面的create table命令的一些语法有点困惑

public function up()
    {
        Schema::create('sessions', function (Blueprint $table) {
            $table->string('id')->unique();
            $table->unsignedInteger('user_id')->nullable();
            $table->string('ip_address', 45)->nullable();
            $table->text('user_agent')->nullable();
            $table->text('payload');
            $table->integer('last_activity');
        });
    }

根据我的理解,上面的postgres等价物是

create table sessions (
    id text unique not null,
    user_id int references users,
    ip_address text,
    user_agent text,
    payload text,
    last_activity integer

);

然而,我不确定我是否正确翻译了$table->string('ip_address', 45)->nullable();,因为我不确定string('ip_address', 45)到底在做什么。
我到potgres的转换正确吗?或者我需要做什么改变才能在postgres create命令中有等价的东西?

9jyewag0

9jyewag01#

例如,您可以按照开发人员的意图利用artisan命令的迁移用途:

php artisan migrate --pretend

但是,它有一个警告,你需要有一个工作的数据库服务器来使它真正工作。它将在目标数据库中创建migrations表(如果它不存在),但它不会在迁移中创建任何表。它还将附着migrations表,所以你可能需要使用新的数据库或在运行pretend之前截断migrations表。
或者,您可以深入研究Laravel's SQL "Grammar" code并从中找出答案。遗憾的是,还没有人为它制作一个易于阅读的参考表。
在你的例子中,它大致是这样翻译的:
| 拉拉韦尔|波斯特格雷|
| - -|- -|
| $table->string('id')->unique();| id varchar|
| $table->unsignedInteger('user_id')->nullable();| user_id integer null|
| $table->string('ip_address', 45)->nullable();| ip_address varchar(45) null个|
| $table->text('user_agent')->nullable();个|user_agent varchar null|
| $table->text('payload');个|payload text个|
| $table->integer('last_activity');| last_activity integer个|
或者更确切地说,用PostgreSQL编写:

create table sessions (
    id varchar,
    user_id integer null,
    ip_address varchar(45) null,
    user_agent varchar null,
    payload text,
    last_activity integer
);

注意事项:

相关问题