Doctrine preLoad Listener 在执行前操纵 QueryBuilder
Posted
技术标签:
【中文标题】Doctrine preLoad Listener 在执行前操纵 QueryBuilder【英文标题】:Doctrine preLoad Listener to Manipulate QueryBuilder before Execution 【发布时间】:2015-11-02 19:29:46 【问题描述】:有没有办法在查询发送到数据库之前操作 Doctrine 2.6 QueryBuilder (DQL)?
例如,如果我们总是希望关联两个实体(没有延迟加载),那么我们需要 JOIN 另一个实体的表(为了提高效率)。因此,如果我们可以检查其他实体是否已加入,那就太好了,如果没有,则自动加入。
但是教义没有preLoad listener...
【问题讨论】:
【参考方案1】:您可以通过其他方式实现您的目标。您可以设置 Eager 模式以获取注释中的实体:
/**
* @ORM\ManyToOne(..., fetch="EAGER")
*/
你还需要什么preLoad
听众?
如果您只想在执行之前修改每个生成的 SQL,您可以使用 SQL Filters。
【讨论】:
这很有帮助,我必须试着记住我 5 个月前的用例,才能知道这是否是一个解决方案。我们可能找到了一些其他的解决方法。谢谢!以上是关于Doctrine preLoad Listener 在执行前操纵 QueryBuilder的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 LD_PRELOAD 或 ld.so.preload 配置?