結果セット整形
DQL における、結果セットの整形。
Data Hydrators
【環境】
Symfony:1.4.13
doctrine:1.2.4
Symfony:1.4.13
doctrine:1.2.4
書式
execute, fetchOne, fetchAll などの第2引数に指定する。
- $q = Doctrine_Core::getTable('User')
- ->createQuery('u')
- ->leftJoin('u.Email e')
- ->where('u.username = ?', 'jwage');
- $user = $q->fetchOne(array(), Doctrine_Core::HYDRATE_RECORD);
詳細
HYDRATE_RECORD
レコードをオブジェクトとして取得。
デフォルト値なので、省略すればこれになる。
HYDRATE_ARRAY
連想配列として取得。
HYDRATE_SCALAR
連想配列として取得。
キーが、カラム名_フィールド名 という書式になっている。
HYDRATE_SINGLE_SCALAR
配列として取得。
WHERE 句で指定したカラムの値を、
添え字 0 から始まる配列の要素に格納(しているように見える)。
HYDRATE_ON_DEMAND
公式サイトを読む限り、
「1レコードしか読み込まないのでメモリを節約できるよ」
って書いてある気がするけど
実験したら、時間制限に引っ掛かって戻ってこなかったので
今回はパス。
HYDRATE_RECORD_HIERARCHY
nested ビヘイビアを利用しているときに使える引数っぽい。
オブジェクトとして取得。
HYDRATE_ARRAY_HIERARCHY
nested ビヘイビアを利用しているときに使える引数っぽい。
連想配列として取得。
HYDRATE_NONE
配列として取得。
取得してきたデータを、添え字 0 から始まる配列の要素に格納(しているように見える)。
HYDRATE_ARRAY_SHALLOW
連想配列として取得。
SELECT で指定したカラムだけを取得。
※下2つは、下記参考サイトから拾ってきた。
公式サイトに全種類が載っていないのは不思議・・・
HYDRATE_RECORD_SHALLOW
上記定数を参考に、こんなのもあるかと思ったけどなかったw
参考サイト
stackoverflow:Select One column Doctrine DQL(2013-01-19)