如何创建自定义库类
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,不再维护。
读这个页面的更新版本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 \实体ProductRepository”) * /类产品{/ /……}
1 2 3 4 5
# src / AppBundle /资源/ config /理论/ Product.orm.ymlAppBundle \实体\产品:类型:实体repositoryClass:AppBundle \ \ 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 \ \ ProductRepository实体”>< !——……- - >< /实体>< /doctrine-mapping>
学说可以生成空库中所有的实体类应用程序通过使用相同的命令生成早些时候失踪的getter和setter方法:
1
php bin /控制台学说:美元AppBundle生成:实体
提示
如果你选择自己创建存储库类,他们必须扩展学说\ 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
美元新兴市场=美元这- >getDoctrine ()- >getManager ();美元产品=美元新兴市场- >getRepository (“AppBundle:产品”)- >findAllOrderedByName ();
请注意
当使用一个自定义存储库类,你仍然可以访问默认查找器方法等find ()
和findAll ()
。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。