Symfony2チュートリアル(第4章)に従っていますがgetLatestBlogs
、カスタムリポジトリからメソッドを取得するのに問題があります。
LinuxMintのPharでSymfony2.2を使用しています。
自分でリポジトリを作成しましたが、困惑しています。このエラーが発生します:
未定義のメソッド'getLatestBlogs'。メソッド名は、findByまたはfindOneByのいずれかで始まる必要があります。-BadMethodCallException
私は他の同様の質問をグーグルで検索しましたが、役に立ちませんでした。誰かが私のコードのエラーを見つけることができますか?
追加情報
私のcomposer.jsonは次のように読みます:
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.2.0", ** NOTE : Originally read 2.2.* but I changed and successfully ran a composer update **
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.2.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.2.*",
"symfony/monolog-bundle": "2.2.*",
"sensio/distribution-bundle": "2.2.*",
"sensio/framework-extra-bundle": "2.2.*",
"sensio/generator-bundle": "2.2.*",
"jms/security-extra-bundle": "1.4.*",
"jms/di-extra-bundle": "1.3.*",
"doctrine/doctrine-fixtures-bundle": "dev-master",
"doctrine/data-fixtures" : "dev-master"
},
私のsrc/Blogger/BlogBundle/Controller/PageController.php
:
namespace Blogger\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Blogger\BlogBundle\Entity\Enquiry;
use Blogger\BlogBundle\Form\EnquiryType;
class PageController extends Controller
{
public function indexAction()
{
$em = $this->getDoctrine()
->getManager();
$blogs = $em->getRepository('BloggerBlogBundle:Blog')->getLatestBlogs();
return $this->render('BloggerBlogBundle:Page:index.html.twig', array(
'blogs' => $blogs
));
}
もともと嘘と私のsrc/Blogger/BlogBundle/Entity/Blog.php
:
namespace Blogger\BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="blog")
* @ORM\Entity(repositoryClass="Blogger\BlogBundle\Repository\BlogRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Blog
{
そして最後に私のsrc/Blogger/BlogBundle/Repository/BlogRepository.php
:
namespace Blogger\BlogBundle\Repository;
use Doctrine\ORM\EntityRepository;
/**
* BlogRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class BlogRepository extends EntityRepository
{
public function getLatestBlogs($limit = null)
{
$qb = $this->createQueryBuilder('b')
->select('b')
->addOrderBy('b.created', 'DESC');
if (false === is_null($limit))
$qb->setMaxResults($limit);
return $qb->getQuery()
->getResult();
}
}