Я получаю «Класс PriceOrQuality \ POQBundle \ Entity \ Tag» не является допустимой сущностью или сопоставленной ошибкой суперкласса. Я проверял все ответы на подобные вопросы, но я не могу понять проблему.
Ошибка моего класса репозитория
<?php namespace PriceOrQuality\POQBundle\Entity\Repository; use Doctrine\ORM\EntityRepository as ER; use PriceOrQuality\POQBundle\Entity\Tag; use Doctrine\ORM\EntityManager; /** * EntityTagsRepository * */ class EntityTagsRepository extends ER { public function getTagsForTagCloud($entity_ids = null, $tag_id = null) { $em = $this->getEntityManager(); $qb = $em->createQueryBuilder(); $qb->select(array('IDENTITY(et.tag) as id, COUNT(et.tag) as tag_id_count, LOWER(t.tag) as tag')); $qb->from('PriceOrQuality\POQBundle\Entity\EntityTag', 'et'); $qb->leftjoin('PriceOrQuality\POQBundle\Entity\Tag','t', 'WITH', 'et.tag = t.id'); $qb->groupBy('et.tag'); $qb->addOrderBy('tag_id_count','DESC'); $qb->setMaxResults(20); return $qb->getQuery() ->getResult(); } }
Класс Tag определен в этом файле (Tag.php) (только для определения):
<?php namespace PriceOrQuality\POQBundle\Entity; // src/PriceOrQuality/POQBundle/Entity/Tag.php use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; use PriceOrQuality\POQBundle\Entity\EntityTag; use PriceOrQuality\POQBundle\Entity\User; use JMS\SerializerBundle\Serializer\Serializer; /** * @ORM\Entity(repositoryClass="PriceOrQuality\POQBundle\Entity\Repository\TagsRepository") * @ORM\Table(name="tags") * @ORM\HasLifecycleCallbacks */
Есть ли у любого из вас умные парни какие-либо идеи о том, с чего начать с отладки?
Заранее спасибо,
руна
Нашел вопрос.
У меня было // @ todo после определения мета и до определения класса. По-видимому, это исказило отображение, поскольку оно не было отображено в доктрине.
Перемещение // @ todo и повторное отображение отображения устранили проблему.
Для тех, кто находит этот вопрос с похожими проблемами, попробуйте запустить:
php app/console doctrine:mapping:info
Он покажет вам, есть ли у вас проблемы в структуре отображения в доктрине
Спасибо за ваше время, ребята.
Привет, Руна
Прочтите немного на построителе запросов. Это проще и отличается от SQL-запроса. Нет необходимости в условиях соединения.
Это (для начала):
$qb->leftjoin('PriceOrQuality\POQBundle\Entity\Tag','t', 'WITH', 'et.tag = t.id');
Должно быть просто:
$qb->leftJoin('et.tag','t');
Там может быть больше проблем, но это поможет вам начать. http://docs.doctrine-project.org/en/latest/reference/query-builder.html