2013-07-20 2 views
2

Я получаю «Класс PriceOrQuality \ POQBundle \ Entity \ Tag» не является допустимой сущностью или отображенной ошибкой суперкласса. Я проверил все ответы на подобные вопросы, но я не могу понять проблемуSymfony/Doctrine: Класс не является допустимым сущностью или сопоставленным суперклассом

ошибка брошена моего Repository класса

<?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.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 
*/ 

Есть ли у кого-нибудь из вас умные парни какие-либо идеи о том, с чего начать с отладки?

Спасибо заранее,

Rune

+0

Можете ли вы сказать нам, если есть что-то особенное под последним DocBlock? Как расширенный класс? Или где ошибка выбрана точно (какая строка запускает ее)? Потому что, на первый взгляд, я рассматриваю этот вопрос. – UrGuardian4ngel

+0

Запрос вызывает ошибку. Согласно журналу, это вызывает getResult(). – BispensGipsGebis

ответ

11

Обнаружили проблему.

У меня было // @ todo после определения мета и до определения класса. По-видимому, это исказило отображение, поскольку оно не было отображено в доктрине.

Перемещение // @ todo и повторное отображение изображения устранили проблему.

Для кем бы находит этот вопрос с подобными проблемами попробуйте запустить:

php app/console doctrine:mapping:info 

Он покажет вам, если у вас есть проблемы в структуре отображения в доктрине

Спасибо за ваше время ребята.

Приветствия, руна

+0

Хорошо, рад слышать, что вы его нашли. Пожалуйста, отметьте свой собственный ответ, как он решил? ;) – UrGuardian4ngel

+0

Спасибо, я буду - но не могу до завтра, видимо.:) – BispensGipsGebis

0

Почитайте немного на построитель запросов. Это проще и отличается от 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

+0

Ну, не думайте, что это проблема. Я изначально думал то же самое, поэтому я попробовал это с моими классами. Удивительно, но это сработало ...? Изменить: Ну, используя сущность на сущности, а не сущность на ID, как указано здесь, но все же. – UrGuardian4ngel

+0

Я прочитал запрос строителя запросов. У меня есть отношение «многие ко многим», разбитое на три таблицы (и соответствующие) классы. Поэтому мне нужно контролировать, как создаются соединения. Выполняя то, что вы предлагаете, Керад дает неверный результат. @UrGuardianAngel et.tag - это поле id в классе ET, поэтому оно соответствует идентификатору, который является полем ID для класса Tag. Будет ли это любая помощь, если я приложу три класса: Tag, Entity, EntityTag? – BispensGipsGebis

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

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