Php SymBlog:未定义的方法。方法名称必须以findBy或findOneBy开头

Php SymBlog:未定义的方法。方法名称必须以findBy或findOneBy开头,php,symfony,model-view-controller,controller,doctrine,Php,Symfony,Model View Controller,Controller,Doctrine,我目前正在与Symfony2的 我收到以下错误消息: 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 Doc

我目前正在与Symfony2的 我收到以下错误消息:

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();
    }

}

无需在此处使用存储库。若您是通过引用实体直接获取数据,那个么应该使用由数据库字段名发布的findBy或findOneBy。
请尝试以下方法:


@user4631643它不返回任何内容,I var转储了$posts变量,它打印了以下内容::\u控制器值“BlogBundle:Post:getLatestPosts”映射到“Blog\BlogBundle\controller\PostController”类,但找不到该类。创建此类或检查类及其命名空间的拼写。
<?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
        ));
    }
...
}
<?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;
...
...
namespace Blog\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller {

    public function indexAction() {

        $posts = this->forward('BlogBundle:Post:getLatestPosts', array(), array());

        return $this->render('BlogBundle:Default:home.html.twig', > >array(
                    'posts' => $posts
        ));
    }
...
}