Пример #1
0
 /**
  * Prepare certain search condition
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare
  * @param array                      $value        Condition data
  * @param boolean                    $countOnly    "Count only" flag. Do not need to add "order by" clauses if only count is needed.
  *
  * @return void
  */
 protected function prepareCndOrderBy(\Doctrine\ORM\QueryBuilder $queryBuilder, array $value, $countOnly)
 {
     list($sort, $order) = $this->getSortOrderValue($value);
     if ('r.bought' == $sort) {
         if (!$countOnly) {
             $queryBuilder->linkLeft('p.order_items')->linkLeft('order_items.order')->linkLeft('order.paymentStatus')->andWhere('(paymentStatus.id IS NULL OR ' . $queryBuilder->expr()->in('paymentStatus.code', \XLite\Model\Order\Status\Payment::getPaidStatuses()) . ')')->addSelect('sum(order_items.amount) as product_amount')->addOrderBy('product_amount', $order);
         }
         $value = array('translations.name', $order);
     }
     parent::prepareCndOrderBy($queryBuilder, $value, $countOnly);
 }
Пример #2
0
 /**
  * Prepare certain search condition
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare
  * @param array                      $value        Condition data
  * @param boolean                    $countOnly    "Count only" flag. Do not need to add "order by" clauses if only count is needed.
  *
  * @return void
  */
 protected function prepareCndOrderBy(\Doctrine\ORM\QueryBuilder $queryBuilder, array $value, $countOnly)
 {
     if (!$countOnly) {
         list($sort, $order) = $this->getSortOrderValue($value);
         if ('r.rating' == $sort) {
             $queryBuilder->linkLeft('p.reviews', 'r');
             $queryBuilder->addSelect('SUM(r.rating) as rsm');
             $sort = 'rsm';
             $queryBuilder->addOrderBy($sort, $order);
         } else {
             parent::prepareCndOrderBy($queryBuilder, $value, $countOnly);
         }
     }
 }