我已经阅读了有关标题中声明的相同错误消息的现有页面。比如这里的例子:
The method name must start with either findBy or findOneBy. Undefined method Symfony?
但是,我没有找到有效的解决方案。我根据手册做了一切:
http://symfony.com/doc/3.0/book/doctrine.html#custom-repository-classes
我使用基于注释的配置,这是食品类的开始:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Food
*
* @ORM\Table(name="food")
* @ORM\Entity(repositoryClass="AppBundle\Entity\FoodRepository")
*/
但是,命令:
php bin/console doctrine:generate:entities AppBundle
不会生成FoodRepository存储库,因此我必须手动执行此操作。这是FoodRepository的代码:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\EntityRepository;
class FoodRepository extends EntityRepository
{
public function findFoodsByName()
{
return $this->getEntityManager()
->createQuery(
'SELECT f FROM AppBundle:Food f WHERE f.foodname LIKE :food'
)
->getResult();
}
}
,这是来自控制器的切片:
$em = $this->getDoctrine()->getManager();
$foods = $em->getRepository('AppBundle:Food')
->findFoodsByName();
我还试图用命令清空Doctrine缓存:
php app/console doctrine:cache:clear-metadata
没有结果。问题依然存在。
Symfony有没有人遇到过同样的问题?你是怎么解决这个问题的?