...
Das ist der häufigste und übliche Fall.
Connection
In der Connection wird der Cache aktiviert: \Brandbox\Framework\Brandbox\Doctrine\Lib\Connection\Connection::enableSecondLevelCache
Cacheable oder nicht
Ein Query ist Cacheable wenn ein Entity im Result ausgeliefert wird. Ist das nicht der Fall, kommt es zum Fehler (WSOD). Man erkennt das an der Hydration.
Letztlich ist „nur“ dieses Objekt cacheable: \Doctrine\ORM\AbstractQuery::HYDRATE_OBJECT
Evict
Wird ein Datensatz verändert (DELETE, INSERT, UPDATE) muss der verändernde Query ein Hint erhalten:
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
$qb
->delete($class, $identifier)
->where($expr->eq($identifier . '.id', ':id'))
->setParameter(':id', $id)
->getQuery()
->setHint(ORM\Query::HINT_CACHE_EVICT, true)
->execute()
; |