fixtures done
This commit is contained in:
35
src/Purger/MyPurger.php
Normal file
35
src/Purger/MyPurger.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Purger;
|
||||
|
||||
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
class MyPurger extends ORMPurger
|
||||
{
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function __construct(private readonly EntityManagerInterface $entityManager, array $excluded = [])
|
||||
{
|
||||
parent::__construct($this->entityManager, $excluded);
|
||||
}
|
||||
|
||||
/**
|
||||
* Purges the MySQL database with temporarily disabled foreign key checks.
|
||||
*
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function purge(): void
|
||||
{
|
||||
$connection = $this->entityManager->getConnection();
|
||||
|
||||
try {
|
||||
$connection->executeStatement('SET FOREIGN_KEY_CHECKS = 0');
|
||||
|
||||
parent::purge();
|
||||
} finally {
|
||||
$connection->executeStatement('SET FOREIGN_KEY_CHECKS = 1');
|
||||
}
|
||||
}
|
||||
}
|
||||
28
src/Purger/MyPurgerFactory.php
Normal file
28
src/Purger/MyPurgerFactory.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Purger;
|
||||
|
||||
use Doctrine\Bundle\FixturesBundle\Purger\PurgerFactory;
|
||||
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
|
||||
use Doctrine\Common\DataFixtures\Purger\PurgerInterface;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
class MyPurgerFactory implements PurgerFactory
|
||||
{
|
||||
/**
|
||||
* Adapted from {@see \Doctrine\Bundle\FixturesBundle\Purger\ORMPurgerFactory} to return a MySQL-specific {@see PurgerInterface}.
|
||||
*
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function createForEntityManager(
|
||||
?string $emName,
|
||||
EntityManagerInterface $em,
|
||||
array $excluded = [],
|
||||
bool $purgeWithTruncate = false
|
||||
): PurgerInterface {
|
||||
$purger = new MyPurger($em, $excluded);
|
||||
$purger->setPurgeMode($purgeWithTruncate ? ORMPurger::PURGE_MODE_TRUNCATE : ORMPurger::PURGE_MODE_DELETE);
|
||||
|
||||
return $purger;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user