【发布时间】:2012-11-14 02:59:12
【问题描述】:
我们在 Symfony2 项目中从控制器调用某个自定义实体存储库函数时遇到问题。我们之前已经成功地与其他实体合作过,所以我们可能遗漏了一些东西,我无法弄清楚它可能是什么。
我们的存储库类如下所示:
<?php
namespace OurSite\Bundle\OurBundle\Entity;
use Doctrine\ORM\EntityRepository;
class BlogRepository extends EntityRepository
{
public function findPreviousPosts($limit = 6)
{
$q = $this->createQueryBuilder('q')
->where('q.category = :category')
->setMaxResults($limit)
->add('orderBy', 'q.published ASC')
->getQuery();
$res = $q->getResult();
return $res;
}
}
实体:
<?php
namespace OurSite\Bundle\OurBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* OurSite\Bundle\OurBundle\Entity\Blog
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="OurSite\Bundle\OurBundle\Entity\BlogRepository")
*/
class Blog {
// Non-relevant stuff here
}
当我们这样调用方法时:
$em = $this->getDoctrine()->getEntityManager();
$previousPosts = $em->getRepository('OurSiteOurBundle:Blog')->findPreviousPosts();
我们得到这个:
Undefined method 'findPreviousPosts'. The method name must start with either findBy or findOneBy!
如果我们执行echo get_class($em->getRepository('OurSiteOurBundle:Blog'));,它会按预期输出BlogRepository。
什么可能导致问题?我们在项目中有一个多余的bundle 目录,但我猜这不会导致它?
【问题讨论】:
-
如果在方法名的
find后面加上By然后调用呢?