基本上,如果我有一个 DoctrineRecord 对象的 DoctrineCollection,并且想将其转换为数组,我可以使用:
$collection->toArray()
或者$collection->getData()
但我不明白这两种方法有什么区别。
基本上,如果我有一个 DoctrineRecord 对象的 DoctrineCollection,并且想将其转换为数组,我可以使用:
$collection->toArray()
或者$collection->getData()
但我不明白这两种方法有什么区别。
只是教义 2 的更新:
->获取数据()
已经成为
->getValues()
Gonzalo 对 Doctrine 1 是正确的,但希望这可以帮助那些也发现这个线程正在寻找答案但使用 getData() 遇到问题的人。
(抱歉,Gonzalo,我还没有声誉评分来发表评论。)
更新:请参阅下面对教义 2 的回复。此回复仅涵盖教义 1
->toArray()
大多数程序员可能会假设对集合调用 toArray() 只是将所有对象放入一个数组中。虽然 toArray() 确实这样做了,但它还将对象本身转换为关联数组,这可能不是您想要的。
toArray()
相当于这个
$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'];
}
所以数组的每个元素也是一个数组关联。
反而:
->getData()
不完全是最直观的名称,getData() 实际上获取了 Doctrine Collection 对象中的所有对象并将它们放入一个数组中——而不改变对象本身。
所以你会得到对象!
foreach ($resultSet as $post) {
// $post is not an array
echo $post->Id;
}
来源:这里
请记住,这仅适用于 Doctrine 1,对于 Doctrine 2,请参阅下面的答案(或评论)