如何截断symfony 3中的表?

Ash*_*ena 1 php symfony doctrine-orm

我想截断symfony 3.0中的表

我正在使用以下方法.

创建实体:User.php

创建存储库:UserRepository.php

/**
 * UserRepository 
 */

namespace UserBundle\Entity;

use Doctrine\ORM\EntityRepository;


class UserRepository extends EntityRepository {

    public function truncateTable() {
        $em = $this->getEntityManager();
        $dql = 'TRUNCATE TABLE UserBundle:User';
        $query = $em->createQuery($dql);

        return $query->getResult();
    }
Run Code Online (Sandbox Code Playgroud)

}

当我试图从控制器运行此代码时:我收到以下消息:

[2/2] QueryException:[语法错误]第0行,第0列:错误:预期SELECT,UPDATE或DELETE,得到'TRUNCATE'

谁能建议我?

Ale*_*soi 7

下面的代码可以帮助您

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