0

pgsql 8.4に次のテーブルがあります。

user
permission
role
user_permission (n:m)
role_permission (n:m)
user_role (n:1)

GET /user/1データベースから次のようなものを取得する必要があるため、REST サービスがあります。

{
    id:1,
    name: "John Smith",
    roles: [
        {id: 1, name: "Administrator"},
        {id: 2, name: "Editor"}
    ],
    permissions: [
        {id: 1, method: "GET", resource: "^/$"}
    ]
}

ロールはテーブル role & user_role からのもので、パーミッションはテーブル permission & user_permission からのものです。同様のデータをPUT /user/1データベースに送信したい。

pl/pgsql 関数でそれを行うことは可能ですか、それとも単純なクエリを作成し、php から 1 つずつ実行する必要がありますか?

必ずしもjsonをpgsqlに送信したいわけではありません。連結された文字列などのないphp配列でこれが可能であれば、それで十分です。

サーバーをより高いバージョンにアップグレードできません。

リレーショナル マッピングは私には向いていません。PHP で SQL テンプレートを書きたくないので、すべてにストアド プロシージャを使用しています。生データだけが必要です。それで行うのはjson_encodeまたはjson_decodeだけなので、ここでは古典的なORMの方法は役に立たないと思います。データベースのpl/pgsql関数にビジネスロジックがあり、phpはメッセージを検証して変換するだけだからです。 .

4

2 に答える 2