/** * {@inheritdoc} */ protected function getListQueryBuilder(ListFilterInterface $filter = null) { $builder = $this->createQueryBuilder('e')->addSelect('o')->leftJoin('e.position', 'o'); if ($filter instanceof SortFilterInterface) { $order = $filter->getOrder() == 'desc' ? 'DESC' : 'ASC'; if ($filter->getSort() == 'setup') { $builder->orderBy('e.setupDate', $order); } elseif ($filter->getSort() == 'flip') { $builder->orderBy('e.flipDate', $order); } $builder->addOrderBy('e.id', $order); } return $this->applyQueryBuilderFilter($builder, $filter); }
/** * {@inheritdoc} */ protected function getListQueryBuilder(ListFilterInterface $filter = null) { $qb = $this->createQueryBuilder('e'); $date = new \DateTime(); $date->sub(new \DateInterval('P2M')); if ($filter instanceof SortFilterInterface) { $order = $filter->getOrder() == 'desc' ? 'DESC' : 'ASC'; switch ($filter->getSort()) { case 'name': $qb->orderBy('e.name', $order); break; case 'gen': $qb->orderBy('e.genotype', $order); break; case 'vial': $qb->addSelect('count(cntv) AS HIDDEN vialcount')->leftJoin('e.vials', 'cntv')->andWhere('cntv.setupDate > :date')->andWhere('cntv.trashed = false')->setParameter('date', $date->format('Y-m-d'))->groupBy('e.id')->orderBy('vialcount', $order); break; } } $access = $filter instanceof StockFilter ? $filter->getAccess() : null; if ($access == 'mtnt') { $qb->distinct()->join('e.vials', 'v')->andWhere('v.setupDate > :date')->andWhere('v.trashed = false')->setParameter('date', $date->format('Y-m-d')); } return $qb; }