【问题标题】:Doctrine DQL, same result for 2 different queryDoctrine DQL,2 个不同查询的相同结果
【发布时间】:2013-09-12 15:58:09
【问题描述】:

我的 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 中总是有相同的结果 => 有相等并包含第一个查询的结果。

有人能说我怎么解决吗?

谢谢

【问题讨论】:

    标签: doctrine-orm dql doctrine-query


    【解决方案1】:

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

    $this->_em->clear();
    

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

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

    感谢 Doctrine Lazy Loading ... :'(

    【讨论】:

      猜你喜欢
      • 2017-03-02
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多