搜尋

首頁  >  問答  >  主體

將標題重寫為:將php laravel的sql程式碼轉換為postgres格式

我正在將用 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粉252116587P粉252116587317 天前449

全部回覆(1)我來回復

  • P粉184747536

    P粉1847475362024-01-17 09:24:02

    例如,您可以按照開發人員的預期利用 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 整數

    回覆
    0
  • 取消回覆