/** * @param array $ids * @param array $columns * @return array */ public function read($ids, $columns) { foreach ($columns as $key => $value) { if ($value == 'unhashedPassword') { unset($columns[$key]); } } $builder = $this->getBuilder($columns, $ids); $query = $builder->getQuery(); $query->setHydrationMode(AbstractQuery::HYDRATE_ARRAY); $paginator = $this->manager->createPaginator($query); $customers = $paginator->getIterator()->getArrayCopy(); $result['default'] = DbAdapterHelper::decodeHtmlEntities($customers); return $result; }
/** * @param $start * @param $limit * @param $filter * @return array * @throws \Exception */ public function readRecordIds($start, $limit, $filter) { $stockFilter = $filter['stockFilter']; if ($stockFilter === null) { $stockFilter = 'all'; } $builder = $this->modelManager->createQueryBuilder(); $builder->select('d.id')->from(Detail::class, 'd')->leftJoin('d.prices', 'p'); switch ($stockFilter) { case 'all': $builder->where($builder->expr()->isNotNull('d.id')); break; case 'inStock': $builder->where('d.inStock > 0'); break; case 'notInStock': $builder->where('d.inStock <= 0'); break; case 'inStockOnSale': $builder->leftJoin('d.article', 'a')->where('d.inStock > 0')->andWhere('a.lastStock = 1'); break; case 'notInStockOnSale': $builder->leftJoin('d.article', 'a')->where('d.inStock <= 0')->andWhere('a.lastStock = 1'); break; case 'notInStockMinStock': $builder->where('d.stockMin >= d.inStock')->andWhere('d.stockMin > 0'); break; case 'custom': switch ($filter['direction']) { case 'greaterThan': $builder->where('d.inStock >= :filterValue'); break; case 'lessThan': $builder->where('d.inStock <= :filterValue'); break; } $builder->setParameter('filterValue', (int) $filter['value']); // unset filterValues for prevent query errors if (isset($filter['direction'])) { unset($filter['direction']); } if (isset($filter['value'])) { unset($filter['value']); } break; default: throw new \Exception('Cannot match StockFilter - File:ArticlesInStockAdapter Line:' . __LINE__); } if (isset($filter['stockFilter'])) { unset($filter['stockFilter']); } $builder->andWhere("p.customerGroupKey = 'EK'")->andWhere("p.from = 1")->orderBy('d.id', 'ASC'); if (!empty($filter)) { $builder->addFilter($filter); } if ($start) { $builder->setFirstResult($start); } if ($limit) { $builder->setMaxResults($limit); } $query = $builder->getQuery(); $query->setHydrationMode(AbstractQuery::HYDRATE_ARRAY); $paginator = $this->modelManager->createPaginator($query); $records = $paginator->getIterator()->getArrayCopy(); $result = []; if ($records) { foreach ($records as $value) { $result[] = $value['id']; } } return $result; }