Sulu\Component\Rest\ListBuilder\Doctrine\DoctrineListBuilder::execute PHP Method

execute() public method

public execute ( )
    public function execute()
    {
        // emit listbuilder.create event
        $event = new ListBuilderCreateEvent($this);
        $this->eventDispatcher->dispatch(ListBuilderEvents::LISTBUILDER_CREATE, $event);
        $this->expressionFields = $this->getUniqueExpressionFieldDescriptors($this->expressions);
        // first create simplified id query
        // select ids with all necessary filter data
        $ids = $this->findIdsByGivenCriteria();
        // if no results are found - return
        if (count($ids) < 1) {
            return [];
        }
        // now select all data
        $this->queryBuilder = $this->em->createQueryBuilder()->from($this->entityName, $this->entityName);
        $this->assignJoins($this->queryBuilder);
        // Add all select fields
        foreach ($this->selectFields as $field) {
            $this->queryBuilder->addSelect($field->getSelect() . ' AS ' . $field->getName());
        }
        // group by
        $this->assignGroupBy($this->queryBuilder);
        // assign sort-fields
        $this->assignSortFields($this->queryBuilder);
        // use ids previously selected ids for query
        $select = $this->entityName . '.id';
        if (null !== $this->idField) {
            $select = $this->idField->getSelect();
        }
        $this->queryBuilder->where($select . ' IN (:ids)')->setParameter('ids', $ids);
        $this->queryBuilder->distinct($this->distinct);
        return $this->queryBuilder->getQuery()->getArrayResult();
    }

Usage Example

Exemplo n.º 1
0
 public function testBetween()
 {
     $nameFieldDescriptor = new DoctrineFieldDescriptor('name', 'name_alias', self::$entityName);
     $this->doctrineListBuilder->setSelectFields([$nameFieldDescriptor]);
     $this->doctrineListBuilder->between($nameFieldDescriptor, [0, 1]);
     $this->queryBuilder->expects($this->once())->method('andWhere')->withAnyParameters();
     $this->queryBuilder->expects($this->at(1))->method('setParameter')->withAnyParameters();
     $this->queryBuilder->expects($this->at(2))->method('setParameter')->withAnyParameters();
     $this->doctrineListBuilder->execute();
 }
All Usage Examples Of Sulu\Component\Rest\ListBuilder\Doctrine\DoctrineListBuilder::execute