1

不久前,我问了几个关于 Doctrine 查询缓存的问题,因为它没有按我的意愿工作。

关于为什么我的关系没有被缓存的问题:

教义结果缓存不缓存带有连接的查询

关于如何使用分离和合并缓存关系的问题:

原则分离、缓存和合并

我不知道为什么我不早点这样做,但我刚刚启用了 Doctrine EchoSQLLogger,当我重新合并实体时,我发现每个页面都在执行三个查询。

我的实体是user,companyprivilege,user是另外两个的父级。当我第一次获得userwithcompanyprivilege加入时,我运行detachuser然后将其放入ApcCache. 当我从缓存中获取时,我会做一个merge让我恢复user所有 Doctrine 魔法的实体。

问题是,当我调用 时merge,它会查询user、 thecompany和 then privilege。这merge是应该如何工作的吗?

有没有办法在user不调用数据库的情况下缓存我的实体与两个完整的关系?

4

1 回答 1

0

对于将来阅读此内容的任何人(或我自己):

我最终PHP Incomplete Class通过为每个单独的实体执行单独的查询和缓存保存来解决这个问题。例如我在问题中的用户/公司/特权困境。我缓存用户,缓存公司并覆盖$user['company']其结果,特权也是如此。

这似乎有效,但很严重。Doctrine 的缓存需要帮助。

于 2013-01-13T10:38:57.917 回答