Nad*_*aya 3 php doctrine doctrine-collection
基本上,如果我有一个DoctrineCollection的DoctrineRecord对象,并想将其转换为数组,我可以使用:
$collection->toArray() 要么 $collection->getData()
但我不明白这两种方法之间的区别.
更新:请参阅下面对 Doctrine 2 的回复。此回复仅涵盖 Doctrine 1
->toArray()
Run Code Online (Sandbox Code Playgroud)
大多数程序员可能会假设对集合调用 toArray() 只会将所有对象放入一个数组中。虽然 toArray() 确实这样做了,但它也会将对象本身转换为关联数组,这可能不是您想要的。
toArray() 相当于这个
$q = Doctrine_Query::create()
->from('Post p')
->setHydrationMode(Doctrine::HYDRATE_ARRAY);
$resultSet = $q->execute(); // $resultSet is an array
Run Code Online (Sandbox Code Playgroud)
foreach ($resultSet as $post) {
// $post is an array
echo $post['title'];
}
Run Code Online (Sandbox Code Playgroud)
所以数组的每个元素也是一个数组关联。
反而:
->getData()
Run Code Online (Sandbox Code Playgroud)
不完全是最直观的名称,getData() 实际上获取 Doctrine Collection 对象中的所有对象并将它们放入一个数组中——而不改变对象本身。
所以你会得到对象!
foreach ($resultSet as $post) {
// $post is not an array
echo $post->Id;
}
Run Code Online (Sandbox Code Playgroud)
来源:这里
请记住,这仅适用于 Doctrine 1,对于 Doctrine 2,请参阅下面的答案(或评论)
只是对Doctrine 2的更新:
- >的getData()
已经成为
- >的GetValues()
Gonzalo适用于Doctrine 1,但希望这有助于任何发现此线程寻找答案但使用getData()遇到问题的人.
(对不起Gonzalo,我还没有评论的评分.)
| 归档时间: |
|
| 查看次数: |
3313 次 |
| 最近记录: |