Symfony Doctrine自定义存储库方法不可见

时间:2017-03-19 13:21:02

标签: php symfony doctrine-orm

我有一个名为ServiceUser的类,声明如下

命名空间AppBundle \ Entity;

将Doctrine \ ORM \ Mapping用作ORM;

/**
 * ServiceUser
 *
 * @ORM\Table(name="serviceuser")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\ServiceUserRepository")
 * 
 */
class ServiceUser

我还有一个ServiceUserRepository,里面有一个名为findAllOrderedByName的自定义存储库方法

命名空间AppBundle \ Repository;

use Doctrine\ORM\EntityRepository;
/**
 * ServiceUserRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class ServiceUserRepository extends EntityRepository
{
    public function findAllOrderedByName()
    {
        return $this->getEntityManager()
            ->createQuery(
                'SELECT s FROM AppBundle:ServiceUser s ORDER BY s.officeName ASC'
            )
            ->getResult();
    }
}

我的问题是ServiceUserController无法访问此自定义方法。

我正在尝试这样做

public function indexAction()
{
    $em = $this->getDoctrine()->getManager();
    $serviceUsers = $em->getRepository('AppBundle:ServiceUser')->findAllByName();
    return $this->render('serviceuser/index.html.twig', array(
        'serviceUsers' => $serviceUsers,
    ));
}

它可以看到像getALL()这样的OOB方法,但不是我的自定义方法findAllOrderedByName()

1 个答案:

答案 0 :(得分:2)

感谢Cerad指出了清除元数据缓存的方向。

如果其他人有同样的问题,则以下命令执行此操作

  

php bin / console doctrine:cache:clear-metadata