/** * Prepare certain search condition * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare * @param string|null $value Condition data * * @return void */ protected function prepareCndModuleIds(\Doctrine\ORM\QueryBuilder $queryBuilder, $value) { if (is_array($value) && count($value) > 0) { $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $value); $queryBuilder->andWhere(sprintf('%s.%s IN (%s)', $this->getMainAlias($queryBuilder), $this->_class->identifier[0], implode(', ', $keys))); } }
/** * Find entities by id's list * * @param array $ids Id's list * @param string $prefix Prefix OPTIONAL * * @return array */ public function findByIds(array $ids, $prefix = 'arr') { if (1 < count($this->_class->identifier)) { // TODO - add throw exception } $result = array(); if ($ids) { $qb = $this->createQueryBuilder(); $keys = \XLite\Core\Database::buildInCondition($qb, $ids, $prefix); $alias = $this->getMainAlias($qb); $qb->andWhere($alias . '.' . $this->_class->identifier[0] . ' IN (' . implode(', ', $keys) . ')'); $result = $qb->getResult(); } return $result; }
/** * Prepare certain search condition * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare * @param mixed $value Condition OPTIONAL * * @return void */ protected function prepareCndProduct(\Doctrine\ORM\QueryBuilder $queryBuilder, $value = null) { if ($value && !is_object($value)) { $ids = array(); foreach ($value as $product) { if ($product && is_object($product) && $product->getProductClass()) { $ids[$product->getProductClass()->getId()] = $product->getProductClass()->getId(); } } if ($ids) { $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $ids, 'pcid'); $queryBuilder->andWhere('p.id IN (' . implode(', ', $keys) . ')'); } else { $queryBuilder->andWhere('p.id is null'); } } }
/** * Prepare certain search condition * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare * @param mixed $value Condition OPTIONAL * * @return void */ protected function prepareCndProductClass(\Doctrine\ORM\QueryBuilder $queryBuilder, $value = null) { if (is_null($value)) { $queryBuilder->andWhere('a.productClass is null'); } elseif (is_object($value) && 'Doctrine\\ORM\\PersistentCollection' != get_class($value)) { $queryBuilder->andWhere('a.productClass = :productClass')->setParameter('productClass', $value); } elseif ($value) { $ids = array(); foreach ($value as $id) { if ($id) { $ids[] = is_object($id) ? $id->getId() : $id; } } if ($ids) { $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $ids, 'pcid'); $queryBuilder->linkInner('a.productClass')->andWhere('productClass.id IN (' . implode(', ', $keys) . ')'); } } }
/** * Get IN () condition * * @param mixed $data Data * @param string $prefix Parameter prefix OPTIONAL * * @return string */ public function getInCondition($data, $prefix = 'id') { if (is_scalar($data)) { $data = array($data); } elseif (is_object($data)) { if ($data instanceof \Iterator) { $tmp = array(); foreach ($data as $value) { $tmp[] = $value; } $data = $tmp; } } $keys = \XLite\Core\Database::buildInCondition($this, $data, $prefix); return implode(', ', $keys); }
/** * Get IN () condition * * @param array $data Data * @param string $prefix Parameter prefix OPTIONAL * * @return string */ public function getInCondition(array $data, $prefix = 'id') { $keys = \XLite\Core\Database::buildInCondition($this, $data, $prefix); return implode(', ', $keys); }
/** * Define query builder for findByExceptionIds() method * * @param array $exceptionIds Exception ids list * * @return \Doctrine\ORM\QueryBuilder */ protected function defineByExceptionIdsQuery(array $exceptionIds) { $qb = $this->createQueryBuilder(); $keys = \XLite\Core\Database::buildInCondition($qb, $exceptionIds); return $qb->andWhere('o.exception_id IN (' . implode(', ', $keys) . ')'); }
/** * Prepare certain search condition * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare * @param mixed $value Condition OPTIONAL * * @return void */ protected function prepareCndProduct(\Doctrine\ORM\QueryBuilder $queryBuilder, $value = null) { if ($value && !is_object($value)) { $ids = array(); foreach ($value as $id) { if ($id) { $ids[] = is_object($id) ? $id->getId() : $id; } } if ($ids) { $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $ids, 'pid'); $queryBuilder->linkInner('p.products')->andWhere('products.product_id IN (' . implode(', ', $keys) . ')'); } } }
/** * Search condition by permission(s) * * @param \Doctrine\ORM\QueryBuilder $queryBuilder QueryBuilder instance * @param mixed $value Searchable value * * @return void */ protected function prepareCndPermissions(\Doctrine\ORM\QueryBuilder $queryBuilder, $value) { if (!empty($value)) { if (!is_array($value)) { $value = array($value); } $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $value, 'perm'); $queryBuilder->linkInner('p.roles')->linkInner('roles.permissions')->andWhere('permissions.code IN (' . implode(', ', $keys) . ')'); } }