query = $this->loadService($serviceClass); } public function createQuery() { $this->query->createQuery(); $this->defaultWith(); $this->defaultJoinWith(); return $this->query; } public function createDefaultQuery(): RepositoryQueryInterface { $this->createQuery(); $this->defaultWith(); $this->defaultJoinWith(); $this->defaultFilterProducerContext(); $this->defaultOrderBy(); return $this->query; } public function defaultWith(): void { $defaultOptions = $this->getDefaultOptionsSearch(); if (is_array($defaultOptions['with']) && count($defaultOptions['with'])) { $this->query->with($defaultOptions['with']); } } public function defaultJoinWith(): void { $defaultOptions = $this->getDefaultOptionsSearch(); if (is_array($defaultOptions['join_with']) && count($defaultOptions['join_with'])) { $this->query->joinWith($defaultOptions['join_with']); } } public function defaultFilterProducerContext(): void { $defaultOptions = $this->getDefaultOptionsSearch(); if(isset($defaultOptions['attribute_id_producer']) && $defaultOptions['attribute_id_producer']) { $this->query->andWhere([$defaultOptions['attribute_id_producer'] => $this->getProducerContextId()]); } } public function defaultOrderBy(): void { $defaultOptions = $this->getDefaultOptionsSearch(); if(isset($defaultOptions['orderby']) && $defaultOptions['orderby']) { $this->query->orderBy($defaultOptions['orderby']); } } }