开发者

What is Doctrine hydration? [closed]

开发者 https://www.devze.com 2022-12-27 02:00 出处:网络
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references,or expertise, but this question will likely solicit debate, a
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. Closed 10 years ago.

I've read about hydration in doctrine's documentation but I still can't understand what it is.

Could so开发者_JAVA技巧meone please explain?


Hydration is a method used to return query results. For example:

  1. HYDRATE_ARRAY - This will return you an array of records that are represented by another 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 - This will return you an collection (Doctrine_Collection) of objects:

    $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 - Will return the value of first column of query's result:

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

There is a few more methods , you can read about each in documentation.


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

It will return just a simple array instead of a doctrine collection object.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号