Php Doctrine2结果缓存id
我第一次在一个项目上实现Doctrine2结果缓存,我做了一些测试,但是我仍然对设置缓存id有一些疑问 假设我有这样一个查询:Php Doctrine2结果缓存id,php,caching,doctrine-orm,Php,Caching,Doctrine Orm,我第一次在一个项目上实现Doctrine2结果缓存,我做了一些测试,但是我仍然对设置缓存id有一些疑问 假设我有这样一个查询: $qb->select('o.img,o.title,o.comment') ->from('MyBundle:Object', 'o') ->where('o.id = :id') ->setParameter('id', $id); $result = $qb->getQuery() -&g
$qb->select('o.img,o.title,o.comment')
->from('MyBundle:Object', 'o')
->where('o.id = :id')
->setParameter('id', $id);
$result = $qb->getQuery()
->getScalarResult();
我有一个不断变化的参数(id
):哪个代码可以正确缓存结果(如果结果缓存使用参数自动管理查询,则为idk)
第一:(我想是这个)
第二:
$result = $qb->getQuery()
->useResultCache(true,1800,'my_object')
->getScalarResult();
提前谢谢:-)实际上这两种方法都应该有效。但是,区别在于用于标识存储在缓存中的数据的名称 每个缓存的值都将具有以下结构:
array(
"raw sql with parameters",
array(
"result 1",
"result 2",
"result 3",
),
);
那么
选项1:将缓存应用程序中加载的第一个MyBundle:Object
对象的sql和数据。因此,如果第二个对象选择具有不同的id,则条令将返回先前缓存的对象
如果要缓存在每个请求中都不会更改的对象,可以使用以下代码。一些示例:网页、记录的用户信息、计数器等
选项2:将根据其id缓存每个MyBundle:Object
的sql和数据。如果要加载分离的对象,可以使用此代码。一些例子:一个特殊的MyBundle:对象、特定的图像、特定的电子邮件等
array(
"raw sql with parameters",
array(
"result 1",
"result 2",
"result 3",
),
);