我尝试在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
{
........
}
答案 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();
}
}