Используя Smyfony 3.4 и Doctrine ORM 2.5 (mySql), я ищу способ «сбросить» таблицу.
Под сбросом я подразумеваю, что хочу удалить все записи этой таблицы и сбросить автоинкремент для столбца id. В основном я хочу получить начальное состояние, когда таблица была впервые создана.
Это следует использовать при повторном заполнении таблицы из источника обновлений.
Вероятно, есть способ сделать это с помощью построителя запросов, но я пока не мог этого понять.




Вы можете попробовать что-то вроде:
$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;');