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

В настоящее время я работаю с частью 4 Symfony в проекте SymBlog. Я получаю сообщение ERROR:

Undefined method 'getLatestPosts'. The method name must start with either findBy or findOneBy!500 Internal Server Error - BadMethodCallException 

Это мой класс PostRepository:

  <?php namespace BLog\BlogBundle\Entity; use Doctrine\ORM\EntityRepository; class PostRepository extends EntityRepository { public function getLatestPosts($limit = null) { $qp = $this->createQueryBuilder('p') ->select('p') ->addOrderBy('p.created', 'DESC'); if (false === is_null($limit)) { $qp->setMaxResults($limit); } return $qp->getQuery() ->getResult(); } } 

Это страница контроллера. Метод действия:

 <?php namespace Blog\BlogBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class DefaultController extends Controller { public function indexAction() { $em = $this->getDoctrine() ->getEntityManager(); $posts = $em->getRepository('BlogBundle:Post') ->getLatestPosts(); return $this->render('BlogBundle:Default:home.html.twig', > >array( 'posts' => $posts )); } ... } 

Это образец моего кода ../../../Entity/Post:

 <?php namespace Blog\BlogBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * @ORM\Entity(repositoryClass="Blog\BlogBundle\Entity\PostRepository") * @ORM\Table(name="post") * @ORM\HasLifecycleCallbacks */ class Post { .... ... .. /** * @ORM\Column(type="text") */ protected $post; ... ... 

Я также пробовал все решения в этой статье от ScoRpion

Что здесь ПРОБЛЕМА ???

Проверьте это:

 $posts = $em->getRepository('BlogBundle:Post') ->getLatestPosts(); 

Это должно быть

 $posts = $em->getRepository('BlogBlogBundle:Post') ->getLatestPosts(); 

Посмотрите свое пространство имен.

Удаление полного пути к репозиторию из аннотации класса Entity работает для меня: @ORM\Entity(repositoryClass="AdvertRepository")
Я не понимаю, почему, хотя …

Для меня решение заключалось в том, чтобы поместить только имя репозитория без полного пути к нему.

Была (ошибка):

 * @ORM\Entity(repositoryClass="OC\PlatformBundle\Repository\AdvertRepository") 

Должен быть (работает):

 * @ORM\Entity(repositoryClass="AdvertRepository") 

Решение заключалось в том, чтобы поместить класс репозитория внутри каталога Entity рядом с Post Entity, и теперь это класс Entity:

 <?php namespace Blog\BlogBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * @ORM\Entity(repositoryClass="PostRepository") * @ORM\Table(name="post") * @ORM\HasLifecycleCallbacks */ class Post { .... ... .. /** * @ORM\Column(type="text") */ protected $post; ... ...