0

我对 Dql 查询的缓存有问题,我有这 6 行:

$dql = "SELECT d, c FROM \Cms\Day d LEFT JOIN d.contents c WITH c INSTANCE OF Cms\Message ORDER BY d.num ASC";
$query = $this->_em->createQuery($dql);
$result1 = $query->getResult();

$dql = "SELECT d, c FROM \Cms\Day d LEFT JOIN d.contents c WITH c INSTANCE OF Cms\Article ORDER BY d.num ASC";
$query = $this->_em->createQuery($dql);
$result2 = $query->getResult();

我试过了(在 $query->getResult() 之前):

$query->useQueryCache(false);
$query->setQueryCacheLifetime(0);
$query->useResultCache(false);
$query->setQueryCacheDriver(null);

但是我在 $result1 和 $result2 => 中总是有相同的结果 => 有相等并包含第一个查询的结果。

有人能说我怎么解决吗?

谢谢

4

1 回答 1

0

我刚刚发现 Cms\Days 保留在 EntityManager ( _em ) 中进行 2 个查询,因此我们可以在 2 个 getResult 之间添加:

$this->_em->clear();

或对结果进行 foreach 以分离元素:

foreach($result1 as $element) {
    $this->_em->detach($element);
}

感谢 Doctrine Lazy Loading ... :'(

于 2013-09-13T08:04:33.783 回答