php 什么是 Doctrine 水合作用?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2661762/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
What is Doctrine hydration?
提问by never_had_a_name
I've read about hydration in doctrine's documentation but I still can't understand what it is.
我在学说的文档中阅读了有关水合作用的内容,但我仍然无法理解它是什么。
Could someone please explain?
有人可以解释一下吗?
回答by Crozin
Hydration is a method used to return query results. For example:
Hydration 是一种用于返回查询结果的方法。例如:
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']; }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(); }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)
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']; }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(); }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)
There is a few more methods , you can read about each in documentation.
还有一些方法,您可以在文档中阅读每个方法。
回答by Jubayer Arefin
$q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
It will return just a simple array instead of a doctrine collection object.
它只会返回一个简单的数组,而不是一个学说集合对象。

