我使用sfPropelORMPlugin。 如果我在每个网页上操作一个对象,则Lazyload是可以的。但如果有数百个,我会得到数百个单独的数据库查询。我想完全禁用lazyload或在那些特别繁重的页面上为所需的列禁用它,但到目前为止找不到方法。
答案 0 :(得分:1)
在构建查询时,您应该join
所有关系,这样您就可以在单个查询中获取所有数据。请注意,您必须使用joinWithRelation()
,其中Relation
是相关的表名。
答案 1 :(得分:0)
详细阐述William Durand的答案,也许您还应该看看Propel函数doSelectjoinAll(),它应该预先加载与您的关系相关的所有对象。请记住,这与内存相关可能很昂贵。
另一种技术是使用您需要的连接创建自定义条件,然后使用手动水合技术添加到您的基础对象。当我需要的数据使用聚合或其他未完全映射到对象的列时,我经常这样做。周围有很多水合物()例子。
答案 2 :(得分:0)
为peer添加了实用程序方法,以便能够设置我想要加载的列。对此类数据库查询使用“伪列”。另外,我已经覆盖了hydrate()来理解这个“标记”。一切都很好,直到我发现即使数据是水合的,symfony也不会理解它,也不会让你按预期使用它。
PS加入从未被视为一种选择,因为网站是一种高负荷。