public function testBetween() { $nameFieldDescriptor = new DoctrineFieldDescriptor('name', 'name_alias', self::$entityName); $this->doctrineListBuilder->setFields([$nameFieldDescriptor]); $this->doctrineListBuilder->between($nameFieldDescriptor, [0, 1]); $this->queryBuilder->expects($this->once())->method('andWhere')->with('(SuluCoreBundle:Example.name BETWEEN :name_alias1 AND :name_alias2)'); $this->queryBuilder->expects($this->at(1))->method('setParameter')->with('name_alias1', 0); $this->queryBuilder->expects($this->at(2))->method('setParameter')->with('name_alias2', 1); $this->doctrineListBuilder->execute(); }
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(); }
/** * append parent selector to listbuilder. * * @param $parentKey * @param DoctrineListBuilder $listBuilder */ protected function addParentSelector($parentKey, DoctrineListBuilder $listBuilder) { $manager = $this->getManager(); $parentEntity = $manager->findByKey($parentKey); $listBuilder->between(new DoctrineFieldDescriptor('lft', 'lft', CategoryManager::$categoryEntityName, 'public.lft', [], true), [$parentEntity->getLft() + 1, $parentEntity->getRgt()]); }
/** * Applies the filter parameter and hasNoparent parameter for listbuilder. * * @param Request $request * @param array $filter * @param DoctrineListBuilder $listBuilder */ protected function applyRequestParameters(Request $request, $filter, $listBuilder) { if (json_decode($request->get('hasNoParent', null))) { $listBuilder->where($this->getFieldDescriptorForNoParent(), null); } if (json_decode($request->get('hasEmail', null))) { $listBuilder->whereNot($this->getFieldDescriptors()['mainEmail'], null); } foreach ($filter as $key => $value) { if (is_array($value)) { $listBuilder->in($this->getFieldDescriptors()[$key], $value); } else { $listBuilder->where($this->getFieldDescriptors()[$key], $value); } } }
/** * Prepare list response. * * @param Request $request * @param DoctrineListBuilder $listBuilder * @param string $locale * * @return array */ private function prepareListResponse(Request $request, DoctrineListBuilder $listBuilder, $locale) { $idsParameter = $request->get('ids'); $ids = array_filter(explode(',', $idsParameter)); if ($idsParameter !== null && count($ids) === 0) { return []; } if ($idsParameter !== null) { $listBuilder->in($this->fieldDescriptors['id'], $ids); } $listResponse = $listBuilder->execute(); $listResponse = $this->addAvatars($listResponse, $locale); if ($idsParameter !== null) { $comparator = $this->getComparator(); // the @ is necessary in case of a PHP bug https://bugs.php.net/bug.php?id=50688 @usort($listResponse, function ($a, $b) use($comparator, $ids) { return $comparator->compare($a['id'], $b['id'], $ids); }); } return $listResponse; }