PHPで、ORMを使用してDBからデータを取ってくる際、テーブルではなく関数から取得したい。
SQLで言うと
SELECT * FROM FUNCTIONEXAMPLE() WHERE・・・
みたいなものを実現したいです。
Doctrineとidiormを検討しています。
PHP 7.1
ORM Doctrine OR idiorm
DB PostgreSQL9.5
idiormで実装した場合・・・
下記で取得しようとすると、FUNCTIONEXAMPLE()
の部分がクオートで閉じられるためSQLExceptionが発生します。
php
1 \ORM::configure([ 2 //・・・ 3 ]); 4 5 $list = \ORM::forTable("FUNCTIONEXAMPLE()")->find_array(); 6//---> SELECT * FROM "FUNCTIONEXAMPLE()"
生SQLを実行する関数もあるようですが、こちらは結果リストが取得できません。
php
1 $list = \ORM::rawExecute("SELECT * FROM FUNCTIONEXAMPLE()");// 実行結果のboolが返ってくる
Doctrineはまだ動作確認できていませんが、実体がテーブルでないためEntityの定義付けでうまくいかないと想定しています。
まとめると
・idiormで、クオートをつけずにテーブル名を指定する方法
・idiormで、SQL直接実行の結果リストを取得する方法
・Doctrineで表関数(?)を対象にしてEntityが作れるかどうか・その方法
・その他の方法
のいずれかを見つけたいと思っています。
なにか解決策がありましたらご教示いただければと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/17 04:46