Symfony2 튜토리얼 (4 장)을 따르고 있지만 사용자 지정 리포지토리에서 getLatestBlogs
메서드를 검색하는 데 문제가 있습니다.사용자 정의 리포지토리를 사용할 수 없습니다.
저는 Linux Mint의 Phar에서 Symfony 2.2를 사용하고 있습니다.
저장소를 직접 만들었지 만 난처한 상황입니다. 나는 다른 유사한 질문을 봤지만 아무 소용이있다
Undefined method 'getLatestBlogs'. The method name must start with either findBy or findOneBy! - BadMethodCallException
:이 오류가 발생합니다. 아무도 내 코드에서 오류를 발견 할 수 있습니까?
"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
:
추가 정보는
내 composer.json 읽기
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();
}
}
글쎄, 당신은 스스로 저장소를 만들었지 만 코드는 Doctrine 명령이 생성 한 주석을 보여 주겠다고 ?? –
자습서에서 잘라 붙여 넣기입니다. – prime
메서드 이름이 규약을 따르지 않는다는 내용이 명확하게 나와 있습니다. 이름을 findByDate로 바꾸십시오. 여기서 Date는 엔티티의 열 이름입니다. – Bart