1
學說2查詢緩存對我來說有點令人驚訝。我曾跟隨一個接一個兩個更新查詢:學說查詢緩存&更新
function upd($user, $passwordHash) {
$qb = $this->entityManager->createQueryBuilder()
->update(UserEntity::__class, 'u')
->set('u.password', '?1')
->where('u = ?0')
->setParameters(array($user, $passwordHash));
$qb->getQuery()->execute();
}
我更新的密碼與2個不同的價值(例如A,B),但用戶是一樣的:
upd($user, 'A');
upd($user, 'B');
第一查詢確實更新了數據庫行。但第二個是在執行後沒有對數據庫做任何更改。
試圖解決這個問題,我發現了一些解決方法:
$qb->getQuery()->useQueryCache(false)->execute();
禁用實現QueryCache兩個兩個查詢更改DB一行之後。
所以,問題是:爲什麼教義在第二個UPDATE查詢中使用第一個查詢緩存?爲什麼教義使用緩存,而它是兩個具有不同參數($ passwordHash)的查詢?
由於Doctrine2 ORM 2.3.3及以上版本 – ocornu