私の知る限り、PDOで直接サポートすることはできません。通常、ORMの責任であるクエリの結果から複雑なオブジェクトグラフを作成する必要がある場合。
この機能が必要な場合は、Doctrine
を使用することをお勧めします。 または
編集:
多分私は他の人がそうするかもしれないと確信しているように質問を誤解したと思います。本当の問題は、結合された列にアクセスする方法であり、必ずしもそれらからオブジェクトを作成する方法ではないと思います。
その場合は、PDO::FETCH_ASSOC
のような標準のarryfethcメソッドを使用するだけです。 、PDO::FETCH_NUMERIC
またはPDO::FETCH_BOTH
クエリしたすべての列が表示されます。
したがって、これを「オブジェクトグラフ」に変換する場合は、PDO::FETCH_CLASS
を使用せずに手動で行う必要があります。 。
例:
//$db is pdo:
// also notice im aliase the columns prefixing the name so that we can tell what belongs to
// post and what belongs to user, an alternative approach would be to use FETCH_NUMERIC,
// which just uses the column positions from the seelct statement as the keys
// so in this case post.id would be in the array as key 0, and user.name would be in the
// array as key 4
$stmt = $db->prepare('SELECT post.id as p_id,
post.text as p_text,
post.user_id as p_user_id,
user.id as u_id,
user.name as u_name
FROM POST INNER JOIN User on post.user_id = user.id');
$stmt->execute();
while (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false) {
print_r($row);
/* will output:
Array (
'p_id' => 'value'
'p_text' => 'value'
'p_user_id' => 'value'
'u_id' => 'value',
'u_name' => 'value'
)
So now you need to decide how to create your objects with the information returned
*/
}