我正在將用 php
和 laravel
編寫的 Web 應(yīng)用程式重寫為 JavaScript 堆疊。目前我正在重新設(shè)計資料庫模式,似乎是 mysql 到 postgres。
我對以下 create table
指令的一些語法有點(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 )
正在做。
我對 potgres 的轉(zhuǎn)換是否正確,或者我需要更改什麼才能在 postgres create 命令中獲得等效的內(nèi)容?
例如,您可以按照開發(fā)人員的預(yù)期利用 artisan
指令的遷移。它已在如何將 Laravel 遷移轉(zhuǎn)換為原始 SQL 腳本中進(jìn)行了解釋 您可以使用:
php artisan migrate --pretend
但是,它有一個警告,您需要有一個可用的資料庫伺服器才能真正使其工作。它將在目標(biāo)資料庫中建立migrations
表(如果不存在),但不會在遷移中建立任何表。它還將遵循 migrations
表,因此您可能需要在執(zhí)行 pretend
之前使用新資料庫或截斷 migrations
表。
或者,您可以深入研究 Laravel 的 SQL「語法」程式碼 並從中找出答案。遺憾的是,目前還沒有人為其製作一個易於閱讀的參考表。
在你的情況下,它大致翻譯如下:
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ù) |