Symfony2未定义的方法。方法名称必须以findBy或findOneBy开头 [英] Symfony2 Undefined method. The method name must start with either findBy or findOneBy

查看:180
本文介绍了Symfony2未定义的方法。方法名称必须以findBy或findOneBy开头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在与Symfony2的第4部分SymBlog项目
我得到这个错误消息:

I am currently working with Symfony2's Part 4 OF The SymBlog project I am getting this ERROR message:

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

这是我的PostRepository类:

This is my PostRepository Class:

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

}

这是Controller的页面Action方法:

This is the Controller's page Action method:

<?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代码:

This is a sample of my ../../../Entity/Post code:

<?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;
...
...

我也尝试过这一切的所有解决方案 post ScoRpion

I also tried all solutions in this post by ScoRpion

这里的问题是什么? p>

What is THE PROBLEM here ???

推荐答案

查看:

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

必须是

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

查找您的命名空间。

这篇关于Symfony2未定义的方法。方法名称必须以findBy或findOneBy开头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆