Как правильно указать имя модели / таблицы в запросе Doctrine 2 DQL?

Я обновился до Doctrine 2 в своем приложении Zend. У меня в контроллере есть следующий код:

// get instance of entity manager
$em = $this->_helper->Em();

// get instance of query builder
$qb = $em->createQueryBuilder();

$qb->select('g')
->from('Groups', 'g');

$query = $qb->getQuery();   
$aGroups = $query->getResult();

Однако это вызывает ошибку: Сообщение: [Семантическая ошибка] строка 0, столбец 14 рядом с «Группы g»: Ошибка: класс «Группы» не определен.

Сущности находятся в application / models / Entities /

Цените помощь.


person Mr B    schedule 14.07.2011    source источник
comment
Боковое примечание: вы можете захотеть вытолкнуть этот код построения запроса из контроллера в модель, репозиторий или службу.   -  person David Weinraub    schedule 14.07.2011


Ответы (1)


Две идеи:

  1. Group - полное имя класса? Запросы DQL, с которыми я знаком, используют полное имя класса. Есть ли в классе какое-то псевдо-пространство имен, например Application_Model_Group, Application_Entity_Group или что-то в этом роде?

  2. Имя класса - единственное число Group, а не множественное число Groups?

person David Weinraub    schedule 14.07.2011
comment
Честно говоря, я не уверен, я новичок в пространствах имен. Класс групп в папке Entities объявлен как: class Groups {...}. Итак, я предполагаю, что Groups - это полное имя класса. - person Mr B; 14.07.2011
comment
Тогда это похоже на проблему с автозагрузкой. Как вы настраиваете Doctrine во время начальной загрузки? - person David Weinraub; 14.07.2011
comment
Похоже, ваш автозагрузчик ожидает, что класс находится в пространстве имен Entities. Таким образом, имя класса может быть Entities\Groups или Entities_Groups. - person David Weinraub; 14.07.2011
comment
Спасибо за всю вашу помощь, Дэвид. Я пробовал как Entities \ Groups, так и Entities_Groups в запросе, но выдается та же ошибка ... - person Mr B; 14.07.2011
comment
Помните, что имя класса, которое появляется в запросе, должно совпадать с именем класса, как оно определено в application/models/Groups.php. Согласно конфигурации вашего автозагрузчика, похоже, это должно быть Entities_Groups. - person David Weinraub; 14.07.2011
comment
@Sid, позвольте нам продолжить обсуждение в чате - person David Weinraub; 14.07.2011