学说分离,缓存和合并第2部分

时间:2012-12-23 05:36:55

标签: php doctrine doctrine-orm

前段时间我问了几个关于Doctrine查询缓存的问题,因为它没有像我想要的那样工作。

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

Doctrine result cache not caching a query with a join

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

Doctrine detaching, caching, and merging

我不确定为什么我不早点这样做,但我刚刚启用了Doctrine的EchoSQLLogger,我发现当我将实体合并回来时,每个页面都会进行三次查询。

我的帖子是usercompanyprivilegeuser是其他两个的父母。当我第一次获得加入usercompany的{​​{1}}时,我会在privilege上运行detach,然后将其放入user。当我从缓存中获取时,我做了一个ApcCache,它让我回到了merge实体,其中所有的Doctrine魔法都完好无损。

问题是,当我致电user时,它会查询mergeuser,然后company。这是privilege应该如何工作的吗?

有没有办法在没有调用数据库的情况下缓存我的merge实体并保持两个关系完好无损?

1 个答案:

答案 0 :(得分:0)

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

我最终解决了PHP Incomplete Class问题,为每个实体执行单独的查询和缓存保存。例如我的问题中的用户/公司/特权困境。我缓存用户,缓存公司并覆盖$user['company']及其结果,以及相同的权限。

这似乎有效,但认真。 Doctrine的缓存需要帮助。