orderBy('position', 'ASC'); } public function joinProductFamily():self { if (!$this->isJoinProductFamily) { $this->isJoinProductFamily = true; return $this ->innerJoin('.productFamily', 'pf'); //$qb->addSelect('pf'); ??? } return $this; } public function filterBySection(SectionInterface $section):self { $this->joinProductFamily(); $this->andWhereSection('pf', $section); return $this; } public function filterIsOnline():self { $this->joinProductFamily(); $this->andWhereStatus('pf', 1); return $this; } public function filterBehaviorCountStock() :self { $this->andWhere( $this->expr()->orX( $this->expr()->andX( $this->expr()->orX( 'productFamily.behaviorCountStock LIKE :behaviorCountStockByProductFamily', 'productFamily.behaviorCountStock LIKE :behaviorCountStockByMeasure' ), 'productFamily.availableQuantity < 0 ' ), $this->expr()->andX( 'productFamily.behaviorCountStock LIKE :behaviorCountStockByProduct', 'e.availableQuantity < 0 ' ) ) ); $this->setParameter( 'behaviorCountStockByProductFamily', ProductFamilyModel::BEHAVIOR_COUNT_STOCK_BY_PRODUCT_FAMILY ); $this->setParameter('behaviorCountStockByMeasure', ProductFamilyModel::BEHAVIOR_COUNT_STOCK_BY_MEASURE); $this->setParameter('behaviorCountStockByProduct', ProductFamilyModel::BEHAVIOR_COUNT_STOCK_BY_PRODUCT); return $this; } }