Сброс (очистка) таблицы в Doctrine ORM 2.5 и Symfony 3.4 - PullRequest
0 голосов
/ 25 октября 2018

Использование Smyfony 3.4 и Doctrine ORM 2.5 (mySql) Я ищу способ «перезагрузить» таблицу.

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

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

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

1 Ответ

0 голосов
/ 25 октября 2018

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

$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;');
...