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
ディレクトリがありますが、それが原因ではないのでしょうか?