gpt4 book ai didi

symfony - 方法名称必须以 findBy 或 findOneBy 开头。 Symfony 未定义方法?

转载 作者:行者123 更新时间:2023-12-03 05:45:08 26 4
gpt4 key购买 nike

我正在处理part4 of Symfony2 ,在更新 Controller 和辅助类代码时,我收到以下错误消息

Undefined method 'getLatestBlogs'. The method name must start with either
findBy or findOneBy!

在我将一些代码放入 Controller 之前,我按照教程的教学转移到了我的帮助器类,这导致了上述错误消息。

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

这是我的 Controller 文件索引操作代码:-

// src/Blogger/BlogBundle/Controller/PageController.php
class PageController extends Controller
{
public function indexAction()
{
$em = $this->getDoctrine()
->getEntityManager();

$blogs = $em->getRepository('BloggerBlogBundle:Blog')
->getLatestBlogs();

return $this->render('BloggerBlogBundle:Page:index.html.twig', array(
'blogs' => $blogs
));
}

// ..
}

我附加了/Entity/Blog.php 文件中的几行内容。请看看您的答案是否正确。

<?php
// src/Blogger/BlogBundle/Entity/Blog.php

namespace Blogger\BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity(repositoryClass="Blogger\BlogBundle\Repository\BlogRepository")
* @ORM\Table(name="blog")
* @ORM\HasLifecycleCallbacks()
* @ORM\Entity
*/

class Blog
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\HasLifecycleCallbacks()
*/
protected $id;
--
--
}

我哪里做错了?

最佳答案

确保您已修改实体类:

// src/Blogger/BlogBundle/Entity/Blog.php
/**
* @ORM\Entity(repositoryClass="Blogger\BlogBundle\Repository\BlogRepository")
* @ORM\Table(name="blog")
* @ORM\HasLifecycleCallbacks()
*/
class Blog
{
// ..
}

注释 @ORM\Entity(repositoryClass="Blogger\BlogBu​​ndle\Repository\BlogRepository") 是必需的。

并且不要忘记重新生成实体:

php app/console doctrine:generate:entities Blogger

更新

删除注释@ORM\Entity。它覆盖了正确的注释 @ORM\Entity(repositoryClass="Blogger\BlogBu​​ndle\Repository\BlogRepository")

关于symfony - 方法名称必须以 findBy 或 findOneBy 开头。 Symfony 未定义方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9172586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com