[英]Class inheritance in 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
。
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”错误?
通常,当您忘记在实体类中指定存储库类时,会发生此错误。 尝试将您的实体类的Entity注释修改为:
/**
* @ORM\Entity(repositoryClass="AppBundle\Entity\CategoryRepository")
*/
class Category {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.