सिद्धांत हाइड्रेशन क्या है? [बन्द है]


90

मैंने सिद्धांत के प्रलेखन में जलयोजन के बारे में पढ़ा है, लेकिन मैं अभी भी समझ नहीं पा रहा हूं कि यह क्या है।

कोई समझा सकता है?


Doctrine2 प्रलेखन संदर्भ HYDRATION की व्याख्या करते हुए: doctrine-project.org/docs/orm/2.0/en/reference/…
Dawid Ohia

29
रचनात्मक नहीं है? यह समझने के लिए सबसे बुनियादी अवधारणाओं में से एक है कि डॉक्ट्रिन इंटर्न कैसे काम करते हैं।
सिसवन

6
मुझे लगता है कि इस सवाल को बंद करने के बजाय संरक्षित किया जाना चाहिए।
साइमन

2
@ साइमन सहमत प्रश्न और स्वीकृत उत्तर दोनों ही लोकप्रिय हैं, फिर इसे संरक्षित राज्य में स्थानांतरित क्यों नहीं किया गया ?
डेनिस कुलगिन

जवाबों:


92

हाइड्रेशन एक विधि है जिसका उपयोग क्वेरी परिणामों को वापस करने के लिए किया जाता है। उदाहरण के लिए:

  1. HYDRATE_ARRAY - यह आपको एक और अभिलेख द्वारा दर्शाए गए अभिलेखों की एक सरणी लौटाएगा:

    $q = Doctrine_Query::create()
       ->from('Post p')
       ->setHydrationMode(Doctrine::HYDRATE_ARRAY);
    
    $resultSet = $q->execute(); // $resultSet is an array
    
    foreach ($resultSet as $post) {
        // $post is an array
        echo $post['title'];
    }
  2. HYDRATE_RECORD- यह आपको वस्तुओं का एक संग्रह ( Doctrine_Collection ) लौटाएगा :

    $q = Doctrine_Query::create()
       ->from('Post p')
       ->setHydrationMode(Doctrine::HYDRATE_RECORD); // Unnecessary, HYDATE_RECORD is default method
    
    $resultSet = $q->execute(); // $resultSet is an Doctrine_Collection object
    
    foreach ($resultSet as $post) {
        // $post is an Post object
        echo $post->getTitle();
        echo $post['title']; // Each Doctrine's Model object implements ArrayAccess interface so this is possible
        echo $post->myCustomMethod();
    }
  3. HYDRATE_SINGULAR_SCALAR - क्वेरी के परिणाम के पहले कॉलम का मान लौटाएगा:

     $q = Doctrine_Query::create()
       ->select('p.created_at')
       ->from('Post p')
       ->where('p.id = ?', 321)
       ->setHydrationMode(Doctrine::HYDRATE_SINGULAR_SCALAR); 
    
    $createdAt = $q->execute(); // $createdAt has value of first column from first record from result set (eg.: 2008-04-06 21:22:35)

कुछ और तरीके हैं, आप प्रलेखन में प्रत्येक के बारे में पढ़ सकते हैं।


ठीक है..तो सामान्य रूप से जब मैं sql का उपयोग करता हूं तो यह एक mysql ऑब्जेक्ट देता है और मुझे mysqli_fetch_assoc का उपयोग करना पड़ता है, फिर उन्हें अपने आप से और इसी तरह से सॉर्ट करें ... लेकिन अब यह सब मेरे लिए हल हो गया है। यह है कि जलयोजन के बारे में है, जो मुझे हल वस्तुओं / सरणियों दे रहा है?
never_had_a_name

4
नहीं, यह छँटाई परिणाम (इसे orderBy()संभालें) के बारे में नहीं है । यह आपके क्वेरी परिणाम के बारे में होगा , चाहे वह एकल स्केलर मान ( HYDRATE_SINGULAR_SCALAR) होगा, एक सरणी या सरणियाँ जहां नेस्टेड सरणियाँ प्रत्येक डेटाबेस रिकॉर्ड ( HYDRATE_ARRAY) या वस्तुओं का संग्रह ( ) का प्रतिनिधित्व करती हैं HYDRATE_RECORD। क्या var_dump प्रत्येक जलयोजन मोड के लिए क्वेरी परिणाम पर - "? यह कैसे काम करता" को देखने के लिए सबसे अच्छा तरीका है कि
क्रोज़िन

4
बस थोड़ा सा टिप। 1.2 में HYDRATE_SINGULAR_SCALARएक अपरिभाषित निरंतर त्रुटि देता है। HYDRATE_SINGLE_SCALARसही है।
दर्मेन अमनबायेव

1
एक नोट के रूप Doctrine::HYDRATE_RECORDमें अब जाना जाता हैDoctrine::HYDRATE_OBJECT
स्टीव ट्यूबर

1
उपरोक्त दस्तावेज का एक लिंक इस उत्तर को और अधिक उपयोगी बना देगा।
बीन

2
$q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);

यह एक सिद्धांत संग्रह वस्तु के बजाय सिर्फ एक सरल सरणी लौटाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.