Réécrivez le titre comme suit : Convertissez le code SQL de PHP Laravel au format Postgres
P粉252116587
P粉252116587 2024-01-16 13:47:34
0
1
447

Je réécris une application web écrite en phplaravel dans une pile JavaScript. Actuellement, je suis en train de repenser mon schéma de base de données, qui semble être MySQL vers Postgres.

Je suis un peu confus au sujet de certaines syntaxes des create table commandes

suivantes
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');
        });
    }

D'après ma compréhension, l'équivalent de postgres ci-dessus est

create table sessions (
    id text unique not null,
    user_id int references users,
    ip_address text,
    user_agent text,
    payload text,
    last_activity integer
    
);

Mais je ne suis pas sûr de le traduire correctement $table->string('ip_address', 45)->nullable(); ,因为我不确定 string('ip_address', 45 ).

Ma conversion en potgres est-elle correcte, ou y a-t-il quelque chose que je dois modifier pour obtenir l'équivalent dans la commande postgres create ?

P粉252116587
P粉252116587

répondre à tous(1)
P粉184747536

Par exemple, vous pouvez tirer parti de la migration de la commande artisan comme le souhaitait le développeur. C'est expliqué dans Comment convertir des Migrations Laravel en scripts SQL bruts Vous pouvez utiliser :

php artisan migrate --pretend

Cependant, cela comporte une mise en garde : vous devez disposer d'un serveur de base de données pour que cela fonctionne réellement. Cela créera la table migrations表(如果不存在),但不会在迁移中创建任何表。它还将遵循 migrations 表,因此您可能需要在运行 pretend 之前使用新数据库或截断 migrations dans la base de données cible.

Alternativement, vous pouvez fouiller dans le code de « syntaxe » SQL de Laravel et le découvrir. Malheureusement, personne n’a encore créé de tableau de référence facile à lire.

Dans votre cas, cela se traduit grossièrement comme suit :

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 整数
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal