我正在将一个用php
和laravel
编写的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命令中有等价的东西?
1条答案
按热度按时间9jyewag01#
例如,您可以按照开发人员的意图利用
artisan
命令的迁移用途:但是,它有一个警告,你需要有一个工作的数据库服务器来使它真正工作。它将在目标数据库中创建
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编写:
注意事项: