I need to clear my doctrine's cache in Symfony.
There must be some way in command line for clear the cache.
Or where should I find and delete the files belonging to cache?
I need to clear my doctrine's cache in Symfony.
There must be some way in command line for clear the cache.
Or where should I find and delete the files belonging to cache?
For Symfony 3+:
php bin/console
will list all commands, the following are relevant for cache:
php bin/console doctrine:cache:clear-metadata
php bin/console doctrine:cache:clear-query
php bin/console doctrine:cache:clear-result
Before Symfony 3:
app/console
will list how you can do it
app/console doctrine:cache:clear-metadata
app/console doctrine:cache:clear-query
app/console doctrine:cache:clear-result
app/console list
to show all commands or app/console list doctrine
to just show commands in the 'doctrine' namespace –
Disenable doctrine:cache:clear-result
in prod environment. It is not working. I also tried bin/doctrine orm:clear-cache:result
. It doesn't work either. I'm using memcache
. –
Lvov If you want to do it within your code (from Doctrine's documentation) :
If you simply want to delete all cache entries you can do so with the deleteAll() method.
$cacheDriver = new \Doctrine\Common\Cache\ArrayCache(); $deleted = $cacheDriver->deleteAll();
In case you use APC, you could also just call the code
<?php
$deleted = apc_clear_cache() && apc_clear_cache('user');
in a php page on the same server. This is what deleteAll() method in Antho's answer does, but you do not depend on the Doctrine Classes. Btw: the complete cache will be flushed - just in case you use it for non-Doctrine stuff.
I thought I was going crazy with doctrine results caching - in the end I had to restart memcached.
I know the title of this post says Symfony 2, but for those of you coming from google, if you have Symfony 3+ its gonna be:
bin/console
As opposed to:
app/console
Maybe is a little late for this, but in my case, doctrine didn't generate the proxy classes in production, for that I change the auto_generate_proxy_classes
to true:
#symfony2&3 app/config/config.yml
#symfony4 config/packages/doctrine.yaml (by default true since 4.2)
doctrine:
orm:
auto_generate_proxy_classes: true #"%kernel.debug%"
Maybe someone searching
Symfony 6.2+
public function __construct(..., private KernelInterface $kernel
And
$this->kernel->shutdown(); //RESET ALL
You running Multiple entities and You managed connection with Sessions
/** @var SiteService $siteService */
$siteService = $this->kernel->getContainer()->get(SiteService::class); //Important kernel->getContainer()
/** @var Site[] $sites */
$sites = $siteService->repository->getByInstalledSites();
foreach ($sites as $site) {
dump('Domain:'. $site->getDomain());
$session = new Session();
$session->set('db_user', $site->getUser());
$session->set('db_password', $this->getDecryptPassword($site->getPassword()));
$session->set('db_name', $site->getDatabaseName())
$user = $this->userService->getById(1);
dump($user);
//what you want to do ...
$this->kernel->shutdown(); //Running All bundles shutdown and container set null
$this->kernel->boot(); // services_resetter->reset and preboot -> loading bundles&Containers and all bundles set container & run boot
}
In the hopes that this might help someone coming here with Doctrine caching issues.
I had an issue with the OrderBy attribute and the PostLoad event not seeming to fire. The problem was that the entity was already loaded into the EntityManager (from when I created it). Because it was already loaded, subsequent calls to get it went to memory/cache and the expected events wouldn't get fired.
To fix, you can clear the entity out of the EntityManager. Then when you get the entity, the PostLoad callback, OrderBy, etc will fire. You can clear the entity out of the EntityManager like so:
$this->em->clear(MyEntity::class);
© 2022 - 2025 — McMap. All rights reserved.
rm -rf app/cache/*
didn't help? – Riffapp/console cache:clear
is only for the symfony (app) cache. I don't think it clears the doctrine cache(s). – Disenable