如何创建自定义库类
编辑该页面警告:你浏览的文档欧宝官网下载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许可证。