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
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
}