2015-06-17 5 views
2

Я немного запутался об ошибке, что я получаю:наследование классов в Symfony2

Неопределенный метод «getAsArray». Имя метода должно начинаться с findBy или findOneBy!

getAsArray() является метод в моем хранилище класса, это называется в PostsController.php так:

$categoriesList = $this->getDoctrine()->getRepository('AirBlogBundle:Category')->getAsArray(); 

CategoryRepository.php определяется следующим образом:

namespace Air\BlogBundle\Repository; 

class CategoryRepository extends TaxonomyRepository 
{ 

} 

Он простирается TaxonomyRepository, который живет в том же Пространство имен.

TaxonomyRepository.php определяется следующим образом:

namespace Air\BlogBundle\Repository; 

use Doctrine\ORM\EntityRepository; 


class TaxonomyRepository extends EntityRepository { 

    public function getQueryBuilder(array $params = array()) { 
     $qb = $this->createQueryBuilder('t'); 

     $qb->select('t, COUNT(p.id) as postsCount') 
       ->leftJoin('t.posts', 'p') 
       ->groupBy('t.id'); 

     return $qb; 
    } 

    public function getAsArray() { 
     return $this->createQueryBuilder('t') 
         ->select('t.id, t.name') 
         ->getQuery() 
         ->getArrayResult(); 
    } 

} 

Почему я получаю "неопределенный метод getAsArray" ошибка?

+0

Используется ли этот метод при помощи хранилища 'AirBlogBundle: Taxonomy'? – D4V1D

+0

Теперь я избавился от наследования и применил методы непосредственно в 'CategoryReposiotry.php', и я все еще получаю ошибку. Возможно ли, что erro вызвано тем, что 'PostsController.php' живет в' AirAdminBundle', а 'CategoryReposiotry' живет в' AirBlogBundle'? Я не уверен, я имею в виду репо с 'getRepository ('AirBlogBundle: Category')', который должен найти репозиторий в другом комплекте. – luqo33

+0

AFAIK, имеющий свое репо в другом комплекте, чем контроллер * не должен * быть проблемой. Кроме того, можете ли вы обновить свой вопрос с помощью своего вновь созданного кода? – D4V1D

ответ

3

Обычно эта ошибка возникает, когда вы забыли указать класс репозитория внутри вашего класса сущности. Попробуйте изменить аннотацию Entity вашего класса объектов:

/** 
* @ORM\Entity(repositoryClass="AppBundle\Entity\CategoryRepository") 
*/ 
class Category {} 
+0

Именно это и было причиной проблемы. Как я не заметил. – luqo33

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