基本上,如果我有DoctrineCollection的DoctrineRecord对象,并希望将其转换为数组,我可以使用:
$collection->toArray()
或$collection->getData()
但我不明白这两种方法之间有什么区别。
答案 0 :(得分:5)
只是对Doctrine 2的更新:
- >的getData()
已成为
- >的GetValues()
Gonzalo适用于Doctrine 1,但希望这有助于任何发现此线程的人寻找答案,但使用getData()时会遇到问题。
(对不起Gonzalo,我还没有评论的评分。)
答案 1 :(得分:3)
->toArray()
大多数程序员可能会假设调用toArray() 集合只会将所有对象放入一个数组中。而 toArray()确实这样做,它也将对象本身转换为 关联数组,可能不是你想要的。
toArray()
相当于此
$q = Doctrine_Query::create()
->from('Post p')
->setHydrationMode(Doctrine::HYDRATE_ARRAY);
$resultSet = $q->execute(); // $resultSet is an array
according to the documentation
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;
}
来源:here
请记住,这仅适用于Doctrine 1,对于Doctrine 2,请参阅下面的答案(或评论)