2013-11-10 7 views
3

Я, вероятно, что-то не замечаю, но не понимаю, почему я не получаю никаких результатов от Doctrine2 DQL. Он не прерывается, но возвращает пустые объекты. Параметры Symfony2 установлены правильно, и я знаю, что база данных запрашивается с соответствующим SQL (путем регистрации SQL-запросов в MySQL).Doctrine2 запрос не заполняет объект объекта

Контроллер с код не работает:

public function debugAction() { 
    $em = $this->getDoctrine()->getEntityManager(); 
    $qb = $em->createQueryBuilder(); 
    $account = $qb->select('a') 
        ->from('SkiviBundle:Account', 'a') 
        ->where('a.id = :id') 
        ->setParameter('id', 5) 
        ->getQuery()->getResult(); 
    return new \Symfony\Component\HttpFoundation\JsonResponse(array(
     'dql' => $qb->getDql(), 
     'sql' => $qb->getQuery()->getSQL(), 
     'params' => $qb->getQuery()->getParameters(), 
     'account' => $account 
    )); 
} 

Вот ответ JSON я получаю, показывая, что возвращаемый объект пуст. Я даже не возвращаю параметры.

{ 
    "dql":"SELECT a FROM SkiviBundle:Account a WHERE a.id = :id", 
    "sql":"SELECT a0_.id AS id0, a0_.business AS business1 FROM account a0_ WHERE a0_.id = ?", 
    "params":{}, 
    "account":[{}] 
} 

Я знаю, что SQL успешно выполнен с использованием базы данных. Как заставить Doctrine2 заполнить возвращаемый объект ($ accounts) как объект объекта? Приложение My Symfony2 является стандартным (создается без дополнительных конфигураций, за исключением добавления сущностей и контроллеров и параметров обновления для доступа к базе данных.

+0

похоже, увлажняющим к объекту, что происходит сбой Когда я называю ** GetResult() **, как это:. $ запроса -> getResult (\ Doctrine \ ORM \ Query :: HYDRATE_ARRAY) он возвращает массив со всеми свойствами, как ожидалось. Как вернуть объект сущности, который я могу изменить и сохранить снова? – Jubz

ответ

1

Кажется, не может использовать: id в dql, id - ключевое слово? Переименовать и повторить попытку

в конце концов, вот способ сделать этот запрос:

$em->getRepository('SkiviBundle:Account')->find($id); 
+0

«: id» - это просто имя параметра. Если я заменил его «? 1» и «setParameter (1, 5)», я все равно получаю пустые объекты сущности. Что нужно для завершения гидратации объекта? – Jubz

Смежные вопросы