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はメッセージを検証して変換するだけだからです。 .