我正在將用 php
和 laravel
編寫的 Web 應(yīng)用程序重寫為 JavaScript 堆棧。目前我正在重新設(shè)計(jì)數(shù)據(jù)庫(kù)模式,似乎是 mysql 到 postgres。
我對(duì)以下 create table
命令的一些語(yǔ)法有點(diǎn)困惑
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'); }); }
根據(jù)我的理解,上面的 postgres
等效項(xiàng)是
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();
,因?yàn)槲也淮_定 string('ip_address', 45 )
正在做。
我對(duì) potgres 的轉(zhuǎn)換是否正確,或者我需要更改什么才能在 postgres create 命令中獲得等效的內(nèi)容?
例如,您可以按照開(kāi)發(fā)人員的預(yù)期利用 artisan
命令的遷移。它已在如何將 Laravel 遷移轉(zhuǎn)換為原始 SQL 腳本中進(jìn)行了解釋 您可以使用:
php artisan migrate --pretend
但是,它有一個(gè)警告,您需要有一個(gè)可用的數(shù)據(jù)庫(kù)服務(wù)器才能真正使其工作。它將在目標(biāo)數(shù)據(jù)庫(kù)中創(chuàng)建migrations
表(如果不存在),但不會(huì)在遷移中創(chuàng)建任何表。它還將遵循 migrations
表,因此您可能需要在運(yùn)行 pretend
之前使用新數(shù)據(jù)庫(kù)或截?cái)?migrations
表。
或者,您可以深入研究 Laravel 的 SQL“語(yǔ)法”代碼 并從中找出答案。遺憾的是,目前還沒(méi)有人為其制作一個(gè)易于閱讀的參考表。
在你的情況下,它大致翻譯如下:
Laravel | Postgre |
---|---|
$table->string('id')->unique(); |
id varchar |
$table->unsignedInteger('user_id')->nullable(); |
user_id 整數(shù) null |
$table->string('ip_address', 45)->nullable(); |
ip_address varchar(45) null |
$table->text('user_agent')->nullable(); |
user_agent varchar null |
$table->text('payload'); |
有效負(fù)載文本 |
$table->integer('last_activity'); |
last_activity 整數(shù) |