जहां तक मुझे पता है, पीडीओ में सीधे तौर पर कोई समर्थन नहीं है। आम तौर पर यदि आपको क्वेरी के परिणाम से जटिल ऑब्जेक्ट ग्राफ़ बनाने की आवश्यकता होती है तो यह ओआरएम की ज़िम्मेदारी है।
यदि आपको इस कार्यक्षमता की आवश्यकता है तो मैं सिद्धांत का उपयोग करने की सलाह दूंगा। या प्रोपेल खुद कुछ लिखने के विरोध में। कुछ और भी हैं जिनका वजन हल्का हो सकता है, लेकिन मुझे उनके साथ कोई अनुभव नहीं है।
संपादित करें:
मुझे लगता है कि शायद मैंने इस सवाल को गलत समझा क्योंकि मुझे यकीन है कि अन्य लोग कर सकते हैं। मुझे लगता है कि असली सवाल यह था कि जुड़े हुए कॉलम तक कैसे पहुंचें, न कि अनिवार्य रूप से उनसे कोई ऑब्जेक्ट कैसे बनाया जाए।
उस स्थिति में बस PDO::FETCH_ASSOC
जैसी मानक arry fethc पद्धति का उपयोग करना , 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
*/
}