<?php
namespace JLaso\TranslationsApiBundle\Entity\Repository;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query;
use JLaso\TranslationsApiBundle\Entity\Translation;
class TranslationRepository extends EntityRepository
{
public function getCatalogs()
{
$em = $this->getEntityManager();
$queryBuilder = $em->createQueryBuilder();
$queryBuilder->select('DISTINCT t.domain AS catalog')
->from('TranslationsApiBundle:Translation', 't')
;
/** @var Translation[] $result */
$result = $queryBuilder->getQuery()->getResult();
$catalogs = array();
foreach($result as $item){
$catalogs[$item['catalog']] = null;
}
return array_keys($catalogs);
}
public function getBundles()
{
$em = $this->getEntityManager();
$queryBuilder = $em->createQueryBuilder();
$queryBuilder->select('DISTINCT t.bundle')
->from('TranslationsApiBundle:Translation', 't')
;
/** @var Translation[] $result */
$result = $queryBuilder->getQuery()->getResult();
$bundles = array();
foreach($result as $item){
$bundles[$item['bundle']] = null;
}
return array_keys($bundles);
}
/**
* @param $bundle
*
* @return Translation[]
*/
public function getKeysByBundle($bundle)
{
$em = $this->getEntityManager();
$queryBuilder = $em->createQueryBuilder();
$queryBuilder->select('t')
->from('TranslationsApiBundle:Translation', 't')
->where('t.bundle = :bundle')
->setParameter('bundle', $bundle)
;
return $queryBuilder->getQuery()->getResult();
}
public function truncateTranslations()
{
$em = $this->getEntityManager();
$cmd = $em->getClassMetadata('TranslationsApiBundle:Translation');
$connection = $em->getConnection();
$dbPlatform = $connection->getDatabasePlatform();
$connection->beginTransaction();
try {
$connection->query('SET FOREIGN_KEY_CHECKS=0');
$connection->query('TRUNCATE '.$cmd->getTableName());
//$connection->query('DELETE FROM '.$cmd->getTableName());
// Beware of ALTER TABLE here--it's another DDL statement and will cause
// an implicit commit.
$connection->query('SET FOREIGN_KEY_CHECKS=1');
$connection->commit();
} catch (\Exception $e) {
$connection->rollback();
}
}
}
|