將標題重寫為:將php laravel的sql程式碼轉換為postgres格式
P粉252116587
P粉252116587 2024-01-16 13:47:34
0
1
441

我正在將用 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 命令中獲得等效的內容?

P粉252116587
P粉252116587

全部回覆(1)
P粉184747536

例如,您可以按照開發人員的預期利用 artisan 指令的遷移。它已在如何將 Laravel 遷移轉換為原始 SQL 腳本中進行了解釋 您可以使用:

php artisan migrate --pretend

但是,它有一個警告,您需要有一個可用的資料庫伺服器才能真正使其工作。它將在目標資料庫中建立migrations表(如果不存在),但不會在遷移中建立任何表。它還將遵循 migrations 表,因此您可能需要在執行 pretend 之前使用新資料庫或截斷 migrations 表。

或者,您可以深入研究 Laravel 的 SQL「語法」程式碼 並從中找出答案。遺憾的是,目前還沒有人為其製作一個易於閱讀的參考表。

在你的情況下,它大致翻譯如下:

Laravel Postgre
$table->string('id')->unique(); #id ​​varchar
#$table->unsignedInteger('user_id')->nullable(); user_id 整數 null
$table->string('ip_address', 45)->nullable(); ip_address varchar(45) null
#$table->text('user_agent')->nullable(); #user_agent varchar null
$table->text('payload'); #有效負載文字
#$table->integer('last_activity'); last_activity 整數
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板