_em->getExpressionBuilder(); $query = $this->findByMerchantQuery() ; /* $query->select(array('e as product', 'reductionCatalog as reduction')); $query->from(ReductionCatalogInterface::class, 'reductionCatalog');*/ $query->andWhere(':category MEMBER OF e.productCategories'); $query->andWhere('e.status = 1'); /* /* $query->andWhere($query->expr()->orX( $query->expr()->eq('reductionCatalog', 'null'), $query->expr()->eq( 'reductionCatalog.status = 1 AND ( :user MEMBER OF reductionCatalog.users OR reductionCatalog.users is empty ) AND (:groupUser MEMBER OF reductionCatalog.groupUsers OR reductionCatalog.groupUsers is empty ) AND (e MEMBER OF reductionCatalog.productFamilies OR reductionCatalog.productFamilies is empty') )); $query ->andWhere('reductionCatalog.status = 1') ->andWhere(':user MEMBER OF reductionCatalog.users OR reductionCatalog.users is empty') ->andWhere(':groupUser MEMBER OF reductionCatalog.groupUsers OR reductionCatalog.groupUsers is empty') ->andWhere('e MEMBER OF reductionCatalog.productFamilies OR reductionCatalog.productFamilies is empty') //->andWhere(':category MEMBER OF reductionCatalog.productCategories OR reductionCatalog.productCategories is empty') //->andWhere('e.supplier MEMBER OF reductionCatalog.suppliers OR reductionCatalog.suppliers is empty') ->setParameter('user', $user) ->setParameter('groupUser', $user->getGroupUsers() );*/ $query->setParameter('category', $category->getId()); return $query->getQuery()->getResult() ; } public function getProductFamiliesByNovelties(){ $query = $this->findByMerchantQuery() ; $query->andWhere('e.status = 1'); $query->andWhere(':now <= e.propertyNoveltyExpirationDate') ->setParameter('now', new \DateTime()) ; return $query->getQuery()->getResult() ; } /**************************** OLD *********************************/ public function findNovelties() { $query = $this->findByMerchantQuery() ; return $query->getQuery()->getResult() ; } public function findNoveltiesByParentCategories() { return $this->_productsByParentCategories($this->findNovelties()) ; } public function findOrganics() { $query = $this->findByMerchantQuery() ; $query->andWhere('e.propertyOrganicLabel IS NOT NULL'); return $query->getQuery()->getResult() ; } public function findOrganicsByParentCategories() { return $this->_productsByParentCategories($this->findOrganics()) ; } public function _productsByParentCategories($products) { $categoriesArray = [] ; foreach($products as $product) { $productCategories = $product->getProductCategories() ; $category = $productCategories[0]->getParentCategory() ; if(!isset($categoriesArray[$category->getId()])) { $categoriesArray[$category->getId()] = [ 'category' => $category, 'products' => [] ] ; } $categoriesArray[$category->getId()]['products'][] = $product ; } return $categoriesArray; } }