首页 > 解决方案 > Symfony 3 - 无法使用自定义存储库

问题描述

我尝试在 Symfony 3 中创建默认存储库。首先,我使用方法“findByParentOrderedByName”创建了存储库类。在下一步中,我在实体行中添加:

 * @ORM\Entity(repositoryClass="AppBundle\Repository\ChildRepository")

不幸的是,当我尝试运行 findByParentOrderedByName() 时出现错误

未定义的方法“findAllOrderedByName”。方法名称必须以 findBy、findOneBy 或 countBy 开头!

我做错了什么?

存储库代码:

    <?php

    namespace AppBundle\Entity;

    /**
     * Child
     * @ORM\Entity(repositoryClass="AppBundle\Repository\ChildRepository")
     */
    class Child
    {
    ........
    }

标签: symfonydoctrinerepository

解决方案


要正确使用自定义存储库类,首先必须在实体类中定义存储库类名称。

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\ChildRepository")
 */
class Child
{
}

然后像这样创建存储库类:

namespace AppBundle\Repository;

use Doctrine\ORM\EntityRepository;

class ChildRepository extends EntityRepository
{
    /**
     * @return Child[]
     */
    public function findAllOrderedByName()
    {
        return $this->getEntityManager()
            ->createQuery('SELECT * c FROM AppBundle:Child c ORDERED BY c.name ASC')
            ->getResult();

    }
}

推荐阅读