如何创建自定义库类
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
如何创建自定义库类
内部构造和使用复杂的查询控制器复杂应用程序的维护。为了隔离,重用和测试这些查询,这是一个很好的实践为实体创建一个自定义存储库类。包含您的查询逻辑方法可以存储在这个类中。
要做到这一点,类名的存储库添加到您的实体的映射定义:
1 2 3 4 5 6 7 8 9 10 11 12
/ / src / AppBundle /实体/ Product.php名称空间AppBundle\实体;使用学说\ORM\映射作为ORM;/ * * *@ORM\实体(repositoryClass = " AppBundle \ Repository \ ProductRepository”) * /类产品{/ /……}
1 2 3 4 5
# src / AppBundle /资源/ config /理论/ Product.orm.ymlAppBundle \实体\产品:类型:实体repositoryClass:AppBundle \ Repository \ ProductRepository#……
1 2 3 4 5 6 7 8 9 10 11 12 13 14
< !——src / AppBundle /资源/ config /理论/ Product.orm。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><doctrine-mappingxmlns=“http://doctrine-project.org/schemas/orm/doctrine-mapping”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd”><实体的名字=“AppBundle \实体\产品”repository-class=“AppBundle \ Repository \ ProductRepository”>< !——……- - >< /实体>< /doctrine-mapping>
然后,创建一个空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
使用AppBundle\实体\帖子;/ /……美元entityManager=美元这- >getDoctrine ()- >getManager ();美元产品=美元entityManager- >getRepository(产品::类)- >findAllOrderedByName ();
请注意
当使用一个自定义存储库类,你仍然可以访问默认查找器方法等find ()
和findAll ()
。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。