/**
  * Get driver repository
  *
  * @return \Oro\Bundle\SearchBundle\Engine\Orm\BaseDriver
  */
 protected function getDriverRepo()
 {
     if (!is_object($this->driverRepo)) {
         $config = $this->getEntityManager()->getConnection()->getParams();
         $className = $this->drivers[$config['driver']];
         $this->driverRepo = new $className($config['driver']);
         $this->driverRepo->initRepo($this->_em, $this->_class);
     }
     return $this->driverRepo;
 }
 /**
  * Init additional doctrine functions
  *
  * @param \Doctrine\ORM\EntityManager         $em
  * @param \Doctrine\ORM\Mapping\ClassMetadata $class
  */
 public function initRepo(EntityManager $em, ClassMetadata $class)
 {
     $ormConfig = $em->getConfiguration();
     $ormConfig->addCustomStringFunction('TsvectorTsquery', 'Oro\\Bundle\\SearchBundle\\Engine\\Orm\\PdoPgsql\\TsvectorTsquery');
     $ormConfig->addCustomStringFunction('TsRank', 'Oro\\Bundle\\SearchBundle\\Engine\\Orm\\PdoPgsql\\TsRank');
     parent::initRepo($em, $class);
 }
 /**
  * {@inheritdoc}
  */
 public function walkComparison(Comparison $comparison)
 {
     $value = $comparison->getValue()->getValue();
     list($type, $field) = $this->explodeCombinedFieldString($comparison->getField());
     $index = str_replace('.', '_', uniqid('', true));
     $joinField = sprintf('search.%sFields', $type);
     $joinAlias = $this->driver->getJoinAlias($type, $index);
     $this->qb->leftJoin($joinField, $joinAlias);
     $searchCondition = ['fieldName' => $field, 'condition' => Criteria::getSearchOperatorByComparisonOperator($comparison->getOperator()), 'fieldValue' => $value, 'fieldType' => $type];
     if ($type === Query::TYPE_TEXT) {
         if ($searchCondition['fieldValue'] === '') {
             $this->qb->setParameter('field' . $index, $searchCondition['fieldName']);
             return $joinAlias . '.field = :field' . $index;
         } else {
             return $this->driver->addTextField($this->qb, $index, $searchCondition, $this->setOrderBy);
         }
     }
     return $this->driver->addNonTextField($this->qb, $index, $searchCondition);
 }
Example #4
0
 /**
  * {@inheritdoc}
  */
 protected function getTruncateQuery(AbstractPlatform $dbPlatform, $tableName)
 {
     $query = parent::getTruncateQuery($dbPlatform, $tableName);
     // cascade required to perform truncate of related entities
     if (strpos($query, ' CASCADE') === false) {
         $query .= ' CASCADE';
     }
     return $query;
 }
Example #5
0
 /**
  * {@inheritdoc}
  */
 protected function truncateEntities(AbstractPlatform $dbPlatform, Connection $connection)
 {
     $connection->query('SET FOREIGN_KEY_CHECKS=0');
     parent::truncateEntities($dbPlatform, $connection);
     $connection->query('SET FOREIGN_KEY_CHECKS=1');
 }
 /**
  * Init additional doctrine functions
  *
  * @param EntityManager $em
  * @param ClassMetadata $class
  */
 public function initRepo(EntityManager $em, ClassMetadata $class)
 {
     $ormConfig = $em->getConfiguration();
     $ormConfig->addCustomStringFunction('MATCH_AGAINST', 'Oro\\Bundle\\SearchBundle\\Engine\\Orm\\PdoMysql\\MatchAgainst');
     parent::initRepo($em, $class);
 }