Сброс (очистка) таблицы в Doctrine ORM 2.5 и Symfony 3.4

Используя Smyfony 3.4 и Doctrine ORM 2.5 (mySql), я ищу способ «сбросить» таблицу.

Под сбросом я подразумеваю, что хочу удалить все записи этой таблицы и сбросить автоинкремент для столбца id. В основном я хочу получить начальное состояние, когда таблица была впервые создана.

Это следует использовать при повторном заполнении таблицы из источника обновлений.

Вероятно, есть способ сделать это с помощью построителя запросов, но я пока не мог этого понять.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
0
727
1

Ответы 1

Вы можете попробовать что-то вроде:

$cmd = $em->getClassMetadata($className);
$connection = $em->getConnection();
$dbPlatform = $connection->getDatabasePlatform();
$connection->beginTransaction();
try {
    $connection->query('SET FOREIGN_KEY_CHECKS=0');
    $q = $dbPlatform->getTruncateTableSql($cmd->getTableName());
    $connection->executeUpdate($q);
    $connection->query('SET FOREIGN_KEY_CHECKS=1');
    $connection->commit();
}
catch (\Exception $e) {
    $connection->rollback();
}

И если вы хотите сбросить автоинкремент, просто выполните:

$con->exec('ALTER TABLE ' . $cmd->getTableName() . ' AUTO_INCREMENT = 1;');

Другие вопросы по теме