Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PDO FETCH_CLASS सम्मिलित तालिकाओं के साथ

जहां तक ​​​​मुझे पता है, पीडीओ में सीधे तौर पर कोई समर्थन नहीं है। आम तौर पर यदि आपको क्वेरी के परिणाम से जटिल ऑब्जेक्ट ग्राफ़ बनाने की आवश्यकता होती है तो यह ओआरएम की ज़िम्मेदारी है।

यदि आपको इस कार्यक्षमता की आवश्यकता है तो मैं सिद्धांत का उपयोग करने की सलाह दूंगा। या प्रोपेल खुद कुछ लिखने के विरोध में। कुछ और भी हैं जिनका वजन हल्का हो सकता है, लेकिन मुझे उनके साथ कोई अनुभव नहीं है।

संपादित करें:

मुझे लगता है कि शायद मैंने इस सवाल को गलत समझा क्योंकि मुझे यकीन है कि अन्य लोग कर सकते हैं। मुझे लगता है कि असली सवाल यह था कि जुड़े हुए कॉलम तक कैसे पहुंचें, न कि अनिवार्य रूप से उनसे कोई ऑब्जेक्ट कैसे बनाया जाए।

उस स्थिति में बस 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
   */
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में .csv अपलोड की प्रगति कैसे देखें

  2. एसक्यूएल ड्रॉप टेबल सिंटेक्स - डीबीएमएस द्वारा सूचीबद्ध

  3. MySQL डेटाबेस से कनेक्ट होने पर एंटिटी फ्रेमवर्क का एंटिटी डेटा विजार्ड क्रैश हो जाता है

  4. एक संघ या एक में शामिल हों का प्रयोग करें - तेज़ क्या है

  5. सिद्धांत बूलियन मूल्यों और PDO::ATTR_EMULATE_PREPARES =Mysql में गलत के साथ इकाई को कायम नहीं रखता है