Symfony2 - пользовательский запрос в Entity Repo, похоже, не дает ожидаемых результатов - PullRequest
0 голосов
/ 21 марта 2012

Итак, я пришел к тому, что мне нужно было создать собственный запрос в моем хранилище сущностей, чтобы выполнить дополнительный выбор.

Сам запрос кажется надежным и действительно находит нужный мне результат (я проверил, запустив запрос в Navicat), однако при попытке просмотреть результаты (используя шаблоны Twig) я получаю следующую ошибку:

Элемент "id" для "Array" не существует в DEMODemoBundle: Персонал / Компания: company.html.twig в строке 42

Строка 42 в этом шаблоне:

<td><a href="{{ path('staff_company_show', { 'id': entity.id }) }}">{{ entity.id }}</a></td>

Ранее я использовал базовый запрос "findAll" в своем контроллере, и шаблон Twig работал нормально (он использует цикл for для просмотра результатов и распечатывания таблицы)

Итак, я предполагал, что если мой пользовательский запрос извлечет список результатов со всеми одинаковыми столбцами (только 1 добавленный дополнительный в подвыборе, хотя и не упомянутый идентификатор), то все должно быть хорошо!

Но явно нет. Кажется, что по какой-то причине существует другой уровень Array, и я не знаю, почему?

Вот мой пользовательский запрос в репо (он делает суб-выбор для создания столбца parent_name):

public function getCompanyWithParent()
{
    $dql = 'SELECT c, (SELECT p.name FROM DEMO\DemoBundle\Entity\User\Company p WHERE p.id = c.parent) as parent_name FROM DEMO\DemoBundle\Entity\User\Company c';

    $query = $this->getEntityManager()->createQuery($dql);

    return $query->getArrayResult();
}

Я пробовал оба:

return $query->getArrayResult();

и

return $query->getResult();

Но безрезультатно.

Любые люди идеи?

1 Ответ

0 голосов
/ 21 марта 2012

отсортировано. Кажется, мне нужно было указать столбцы, которые я хотел бы просмотреть, например. SELECT c.id, c.name ... и, к сожалению, не мог просто использовать SELECT c, ... FROM ...

...