2010-04-18 64 views
83

我已经阅读了关于学说文献中的水合作用,但我仍然不明白它是什么。什么是学说水合?

请问有人能解释一下吗?

+24

没有建设性?这是理解理论内部工作原理的最基本概念之一。 – csvan 2014-07-07 09:06:48

+5

我认为这个问题应该被保护而不是关闭。 – Simon 2015-01-30 16:17:52

+1

@Simon同意。问题和接受的答案都很受欢迎,为什么不把它移动到_protected_状态呢? – 2016-07-05 08:43:55

回答

87

水化是一种用于返回查询结果的方法。例如:

  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 - 将返回第一列查询的值r esult:

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

有几个方法,你可以看到每一个文档。

+0

ok ..所以通常当我使用SQL它返回一个MySQL对象,我必须使用mysqli_fetch_assoc,然后由我自己排序等...但现在它的所有排序为我。那水分是关于什么的,给我排序的对象/数组? – 2010-04-18 10:49:26

+4

不,这不是关于排序结果('orderBy()'处理这个)。它是关于*你的查询结果*,它是单个标量值('HYDRATE_SINGULAR_SCALAR'),嵌套数组表示每个数据库记录('HYDRATE_ARRAY')还是一组对象('HYDRATE_RECORD') )。对每个水化模式的查询结果执行[var_dump](http://pl.php.net/manual/en/function.var-dump.php) - 这是查看“它是如何工作的”的最佳方法? – Crozin 2010-04-18 11:24:31

+0

阿哈..我想我现在得到它。所以它是关于我想要的结果是什么形式:标量值,数组或对象?这听起来像一个非常好的功能。比我没有把它们从mysqli_object自己转换:) – 2010-04-19 10:10:21

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

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