#doctrine-orm #symfony
#доктрина-orm #symfony
Вопрос:
$posts = $em->find('ApplicationBlogBundleEntityPost',1);
print_r ($posts);
Почему я это получил?
BariiBlogBundleEntityPost Object ( [id:BariiBlogBundleEntityPost:private] => 1 [title:ApplicationBlogBundleEntityPost:private] => something [body:ApplicationBlogBundleEntityPost:private] => content )
вместо простого массива, подобного этому:
array ( [id] => 1,
[title] => "something",
[body] => "content" )
Я использую его с Symfony 2.
Ответ №1:
Здесь у вас есть пара вариантов. Насколько я знаю, вы не можете найти результаты в виде массивов из репозиториев объектов по умолчанию. Вместо этого вы можете сделать одну из двух вещей:
Во-первых, вы могли бы реализовать toArray()
метод для вашего объекта entity (возможно, через отображенный суперкласс), который просто возвращает массив свойств.
Во-вторых, вы могли бы использовать Doctrine Query Language для извлечения необходимой вам информации с помощью getArrayResult()
метода, возможно, что-то вроде этого:
$query = $em->createQuery('SELECT p FROM ApplicationBlogBundleEntityPost p WHERE p.id=:pid');
$query->setParameter('tid', $postId);
$result = $query->getArrayResult(); // shortcut for $query->getResult(Query::HYDRATE_ARRAY);
Более подробную документацию по DQL можно найти здесь.
Комментарии:
1. Разочаровывает, что Sf2 / Doctrine не предусматривает этот чрезвычайно распространенный вариант использования.