/** * Constructor. * * @param Repository $repository */ public function __construct(Repository $repository) { $this->repository = $repository; $this->manager = $repository->getManager(); $this->metadata = $repository->getMetadata(); $this->query = $this->manager->getConnection()->createQueryBuilder()->from($this->metadata->getTable()); }
/** * Generates a discriminator column SQL condition for the class with the given DQL alias. * * @param array $dqlAliases List of root DQL aliases to inspect for discriminator restrictions. * @return string */ private function _generateDiscriminatorColumnConditionSQL(array $dqlAliases) { $encapsulate = false; $sql = ''; foreach ($dqlAliases as $dqlAlias) { $class = $this->_queryComponents[$dqlAlias]['metadata']; if ($class->isInheritanceTypeSingleTable()) { $conn = $this->_em->getConnection(); $values = array(); if ($class->discriminatorValue !== null) { // discrimnators can be 0 $values[] = $conn->quote($class->discriminatorValue); } foreach ($class->subClasses as $subclassName) { $values[] = $conn->quote($this->_em->getClassMetadata($subclassName)->discriminatorValue); } if ($sql != '') { $sql .= ' AND '; $encapsulate = true; } $sql .= ($sql != '' ? ' AND ' : '') . ($this->_useSqlTableAliases ? $this->getSqlTableAlias($class->table['name'], $dqlAlias) . '.' : '') . $class->discriminatorColumn['name'] . ' IN (' . implode(', ', $values) . ')'; } } return $encapsulate ? '(' . $sql . ')' : $sql; }
public function getConnection() { $classMetadata = array(); $this->em = $this->createEntityManager(); $conn = $this->em->getConnection(); $pdo = $conn->getWrappedConnection(); $schemaTool = new \Doctrine\ORM\Tools\SchemaTool($this->em); if (count($this->classes) > 0) { foreach ($this->classes as $class) { $classMetadata[] = $this->em->getClassMetadata($class); } } else { throw new \Doctrine\ORM\ORMException("No associated classes not yet implemented."); } $schemaTool->createSchema($classMetadata); return $this->createDefaultDBConnection($pdo, $conn->getDatabase()); }
public function testAuditable() { $user = new UserAudit("beberlei"); $article = new ArticleAudit("test", "yadda!", $user, 'text'); $this->em->persist($user); $this->em->persist($article); $this->em->flush(); $this->assertEquals(1, count($this->em->getConnection()->fetchAll('SELECT id FROM revisions'))); $this->assertEquals(1, count($this->em->getConnection()->fetchAll('SELECT * FROM UserAudit_audit'))); $this->assertEquals(1, count($this->em->getConnection()->fetchAll('SELECT * FROM ArticleAudit_audit'))); $article->setText("oeruoa"); $this->em->flush(); $this->assertEquals(2, count($this->em->getConnection()->fetchAll('SELECT id FROM revisions'))); $this->assertEquals(2, count($this->em->getConnection()->fetchAll('SELECT * FROM ArticleAudit_audit'))); $this->em->remove($user); $this->em->remove($article); $this->em->flush(); $this->assertEquals(3, count($this->em->getConnection()->fetchAll('SELECT id FROM revisions'))); $this->assertEquals(2, count($this->em->getConnection()->fetchAll('SELECT * FROM UserAudit_audit'))); $this->assertEquals(3, count($this->em->getConnection()->fetchAll('SELECT * FROM ArticleAudit_audit'))); }
/** * Generates a discriminator column SQL condition for the class with the given DQL alias. * * @param string $dqlAlias * @return string */ private function _generateDiscriminatorColumnConditionSql($dqlAlias) { $sql = ''; if ($dqlAlias) { $class = $this->_queryComponents[$dqlAlias]['metadata']; if ($class->isInheritanceTypeSingleTable()) { $conn = $this->_em->getConnection(); $values = array($conn->quote($class->discriminatorValue)); foreach ($class->subClasses as $subclassName) { $values[] = $conn->quote($this->_em->getClassMetadata($subclassName)->discriminatorValue); } $sql .= ($this->_useSqlTableAliases ? $this->getSqlTableAlias($class->primaryTable['name'], $dqlAlias) . '.' : '') . $class->discriminatorColumn['name'] . ' IN (' . implode(', ', $values) . ')'; } } return $sql; }
/** * Generates a discriminator column SQL condition for the class with the given DQL alias. * * @param array $dqlAliases List of root DQL aliases to inspect for discriminator restrictions. * @return string */ private function _generateDiscriminatorColumnConditionSQL(array $dqlAliases) { $sqlParts = array(); foreach ($dqlAliases as $dqlAlias) { $class = $this->queryComponents[$dqlAlias]['metadata']; if (!$class->isInheritanceTypeSingleTable()) { continue; } $conn = $this->em->getConnection(); $values = array(); if ($class->discriminatorValue !== null) { // discrimnators can be 0 $values[] = $conn->quote($class->discriminatorValue); } foreach ($class->subClasses as $subclassName) { $values[] = $conn->quote($this->em->getClassMetadata($subclassName)->discriminatorValue); } $sqlParts[] = ($this->useSqlTableAliases ? $this->getSQLTableAlias($class->getTableName(), $dqlAlias) . '.' : '') . $class->discriminatorColumn['name'] . ' IN (' . implode(', ', $values) . ')'; } $sql = implode(' AND ', $sqlParts); return count($sqlParts) > 1 ? '(' . $sql . ')' : $sql; }
/** * Truncate the table for the current entity. * * @throws \Doctrine\DBAL\DBALException */ public static function truncate() { $connection = \EntityManager::getConnection(); $platform = $connection->getDatabasePlatform(); $connection->executeUpdate($platform->getTruncateTableSQL(self::getTable(), false)); }
/** * Constructor. * * @param EntityManager $manager * @param Metadata $metadata */ public function __construct(EntityManager $manager, Metadata $metadata) { $this->manager = $manager; $this->metadata = $metadata; $this->query = $manager->getConnection()->createQueryBuilder()->from($metadata->getTable()); }
/** * * @return \dbrecord\Connection */ public function getConnection() { return $this->em->getConnection(); }