/** * 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); }
/** * {@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; }
/** * {@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); }