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 配置?

用apicloud+vue的VueLazyload实现缓存图片懒加载

更新Preloader与uboot

link标签的preload和prefetch

preloader代码分析

链接 rel="preload" 究竟是如何工作的?