মতবাদ হাইড্রেশন কি? [বন্ধ]


90

আমি মতবাদের ডকুমেন্টেশনে হাইড্রেশন সম্পর্কে পড়েছি কিন্তু এখনও এটি বুঝতে পারি না।

কেউ দয়া করে ব্যাখ্যা করতে পারেন?


এইচআইডিআরএশন ব্যাখ্যা করে ডক্ট্রাইন 2 ডকুমেন্টেশন রেফারেন্স: doctrine-project.org/docs/orm/2.0/en/references/…
দাউদ ওহিয়া

29
গঠনমূলক নয়? এটি ডক্ট্রিন ইন্টার্নালগুলি কীভাবে কাজ করে তা বোঝার জন্য একটি অন্যতম মৌলিক ধারণা।
csvan

6
আমি মনে করি এই প্রশ্নটি বন্ধ না করে সুরক্ষিত করা উচিত।
সাইমন

4
@ সিমন সম্মত। প্রশ্ন এবং স্বীকৃত উত্তর উভয়ই জনপ্রিয়, তবে কেন এটি সুরক্ষিত অবস্থায় সরানো হবে না ?
ডেনিস কুলাগিন

উত্তর:


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- এটি আপনাকে অবজেক্টগুলির একটি সংগ্রহ ( ডক্টরিন_কলেকশন ) ফিরিয়ে দেবে :

    $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)
    

আরও কয়েকটি পদ্ধতি রয়েছে, আপনি ডকুমেন্টেশনে প্রতিটি সম্পর্কে পড়তে পারেন।


ঠিক আছে .. সুতরাং সাধারণত যখন আমি এসকিএল ব্যবহার করি তখন এটি মাইএসকিএল অবজেক্ট দেয় এবং আমাকে মাইসকিলি_ফেট_সোক ব্যবহার করতে হবে, তারপরে সেগুলি নিজেই বাছাই করুন ... তবে এখন এটি আমার জন্য বাছাই করা। হাইড্রেশন সম্পর্কে কি এটি আমাকে বাছাই করা বস্তু / অ্যারে দিচ্ছে?
কখনই_হাদ_এ_নাম

4
না, এটি ফলাফল বাছাইয়ের বিষয়ে নয় (এটি orderBy()পরিচালনা করুন)। এটি আপনার ক্যোয়ারির ফলাফল কী হবে , এটি একক স্কেলারের মান ( HYDRATE_SINGULAR_SCALAR), কোনও অ্যারে বা অ্যারে থাকবে যেখানে নেস্টেড অ্যারেগুলি প্রতিটি ডাটাবেস রেকর্ড ( HYDRATE_ARRAY) বা অবজেক্টের সংগ্রহ ( HYDRATE_RECORD) উপস্থাপন করে। প্রতিটি হাইড্রেশন মোডের জন্য ক্যারিয়ারের ফলাফলের উপর var_dump করবেন - "এটি কীভাবে কাজ করে" তা দেখার সেরা উপায় এটি?
ক্রুজিন

4
একটু টিপস। 1.2 সালে HYDRATE_SINGULAR_SCALARএকটি অনির্ধারিত ধ্রুবক ত্রুটি প্রদান করে। HYDRATE_SINGLE_SCALARসঠিক.
ডারম্যান আমানবায়েভ

4
নোট Doctrine::HYDRATE_RECORDহিসাবে এখন পরিচিতDoctrine::HYDRATE_OBJECT
স্টিভ তৌবার

4
পূর্বোক্ত ডকুমেন্টেশনের একটি লিঙ্ক এই উত্তরটিকে আরও সহায়ক করে তুলবে।
শিম শিম

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

এটি মতবাদ সংগ্রহের বস্তুর পরিবর্তে কেবল একটি সাধারণ অ্যারে ফিরে আসবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.