Symfony 3-无法使用自定义存储库

时间:2018-11-26 22:24:15

标签: symfony doctrine repository

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

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

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

  

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

我做错了什么?

存储库代码:

    <?php

    namespace AppBundle\Entity;

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

1 个答案:

答案 0 :(得分:1)

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

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();

    }
}