По всей вероятности, свойства вашего блога объявлены как protected
. Вот почему вы не можете перебирать их снаружи самой сущности.
Если вы используете объекты Blog только для чтения и вам нужен только доступ к свойствам, помеченным как @Columns (читай: вам не нужно вызывать какие-либо методы для вашей сущности), вы можете рассмотреть возможность использования массив гидратация. Таким образом, вы будете иметь дело с простыми массивами, и итерация типа $k=>$v
будет работать нормально.
В противном случае вам нужно создать какой-то метод getValues () для вашего класса сущностей. Это может быть простая реализация, которая просто собирает и массивирует и возвращает его.
Наконец, вы можете создать getValues () общего назначения в качестве служебной функции, которая использует метаданные класса доктрины, чтобы выяснить, какие столбцы и сущности имеют, и работать с этими данными. Простая реализация, подобная этой:
function getEntityColumnValues($entity,$em){
$cols = $em->getClassMetadata(get_class($entity))->getColumnNames();
$values = array();
foreach($cols as $col){
$getter = 'get'.ucfirst($col);
$values[$col] = $entity->$getter();
}
return $values;
}
РЕДАКТИРОВАТЬ - более зрелая версия описанного выше метода, по-видимому, доступна здесь - я еще не играл с ним, но выглядит многообещающе.