未定义的方法' findFoodsByName'。方法名称必须以findBy或findOneBy开头

时间:2016-06-15 11:25:27

标签: php doctrine-orm symfony

我已经阅读了有关标题中声明的相同错误消息的现有页面。比如这里的例子:

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有没有人遇到过同样的问题?你是怎么解决这个问题的?

0 个答案:

没有答案