WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート [Doctrine] 生SQLやPDOStatementをハイドレイトする

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

生のSQLで作成したPDOStatementオブジェクトからハイドレイト(クエリーの結果をオブジェクトにマッピングすること)できないかとコードをたどってみました。


$conn = Doctrine_Manager::connection();
$stmt = $conn->execute('SELECT u.id AS u__id, u.username AS u__username, u.password AS u__password, u.created_at AS u__created_at, u.updated_at AS u__updated_at FROM user u');
$hyd = new Doctrine_Hydrator();
$comp['u']['table'] = Doctrine::getTable('User');
$hyd->setQueryComponents($comp);

$result = $hyd->hydrateResultSet($stmt, array('u'=>'u'));
var_dump($result->toArray());
ポイントはSQLのカラムに全てu__columnのように別名をつけます。この名前を元にマッピングしているようです。

hydrateResultSet()の2番目の引数はu__の頭の文字がキーで値がsetQueryComponentsした配列のtableオブジェクトの入ったキーを指定します。どの値をどのテーブルにハイドレイトするか指定してます。
スポンサーサイト

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。