如何创建自定义库类

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何创建自定义库类

内部构造和使用复杂的查询控制器复杂应用程序的维护。为了隔离,重用和测试这些查询,这是一个很好的实践为实体创建一个自定义存储库类。包含您的查询逻辑方法可以存储在这个类中。

要做到这一点,类名的存储库添加到您的实体的映射定义:

  • 注释
  • YAML
  • XML
1 2 3 4 5 6 7 8 9 10 11 12
/ / src / AppBundle /实体/ Product.php名称空间AppBundle\实体;使用学说\ORM\映射作为ORM;/ * * *@ORM\实体(repositoryClass = " AppBundle \ Repository \ ProductRepository”) * /产品{/ /……}

然后,创建一个空AppBundle \ Repository \ ProductRepository类从学说\ ORM \ EntityRepository

接下来,添加一个新方法findAllOrderedByName ()——新生成的ProductRepository类。该方法将为所有的查询产品实体,命令按名称字母顺序排列:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / src / AppBundle /仓库/ ProductRepository.php名称空间AppBundle\存储库;使用学说\ORM\EntityRepository;ProductRepository扩展EntityRepository{公共函数findAllOrderedByName(){返回美元- >getEntityManager ()- >createQuery (“从AppBundle选择p:产品p p.name ASC的顺序)- >getResult ();}}

提示

实体管理器可以通过访问$ this - > getEntityManager ()在存储库中。

您可以使用此新方法就像默认查找器方法的存储库:

1 2 3 4 5 6 7 8 9
使用AppBundle\实体\产品;/ /……公共函数listAction(){美元产品=美元- >getDoctrine ()- >getRepository(产品::类)- >findAllOrderedByName ();}

请注意

当使用一个自定义存储库类,你仍然可以访问默认查找器方法等find ()findAll ()

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。