->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
Имейте в виду, это работает только для доктрины 1, для Doctrine 2 см ответ ниже (или комментарии)
отличный ответ! благодаря! Я буду придерживаться getData(), затем – NadiaFaya
Обратите внимание, что класс 'Collection' Doctrine 2 - это просто оболочка вокруг массива; 'toArray' возвращает этот массив без каких-либо манипуляций. –