小编Asq*_*Asq的帖子

如何在Doctrine 2中获取没有关联映射的实体

如果在Doctrine中有一组关联映射实体,有时您可能希望检索这些实体而不提取其映射关联并减慢查询速度.

例如,我有一组实体,它们是链接数据库表链中的关联映射.它们都是OnetoMany协会,并作为产品页面矩阵中价格的层次结构.它们可以表示为:

SitePage->SiteMatrix->SiteItems->SiteItemPrices.
Run Code Online (Sandbox Code Playgroud)

关联映射工作正常,当我使用findBy方法获取根SitePage对象时,它包含表示链中映射实体的数组.换句话说,SitePage对象包含所有矩阵,其中包含包含所有价格的所有项目.到现在为止还挺好.

我的问题是,每当我在我的网站上获得一个页面列表时,doctrine就会遍历整个关联映射树并返回整个数据库,这非常慢.有时我想通过ID获取我的SitePage实体,而不包含所有映射的关联.

我已经研究了懒惰和额外的延迟加载关联,但它们似乎只影响某些函数,而不是findBy等.官方文档远非有用:http://doctrine-orm.readthedocs.org/projects/doctrine-orm /en/latest/tutorials/extra-lazy-associations.html

关于Stack Overflow的其他类似问题没有得到答复: Doctrine 2 Association Mapping Overhead?

是否有一种简单的方法来获取没有映射关联的实体?我目前看到的最简单的方法是为每个数据库表创建两个实体,一个具有关联映射,另一个不需要在需要它们的单独情况下使用.对我来说,你不能简单地获取一个实体并指定是否要将其链接到其他实体或自己获取它,这似乎很奇怪.

感谢您提供有关该主题的任何信息.

php doctrine symfony doctrine-orm

5
推荐指数
1
解决办法
986
查看次数

标签 统计

doctrine ×1

doctrine-orm ×1

php ×1

symfony ×1