Doctrine 2 Cache:我可以在Repository :: find *()中使用缓存吗?

时间:2011-01-30 05:06:30

标签: caching doctrine-orm

我不熟悉缓存。从文档中,我可以使用查询缓存,但是像

这样的方法呢
$em->find('Application\Models\project', 1);

2 个答案:

答案 0 :(得分:2)

如果你搜索自动化,我认为awnser不是,他们不是这样的。我正在寻找像我这样的东西。您可以将find(...)包装在服务类的方法getProjectById($ id)中,并在此方法中自行缓存。但是,你也需要一个save()方法,在刷新后清除缓存特定的id。

答案 1 :(得分:1)

正如Christian指出的那样,你可以自己进行查询缓存,并且需要清除缓存的开销。

另一个注意事项,因为我发现自己正在查看EntityRepository类。 find()方法将根据id检查身份映射,因此如果对同一请求中的同一实体执行2次find()调用,则应从Web服务器的内存中返回后续命中。