public function testSetWhereWithNull() { $fieldDescriptors = ['title_id' => new DoctrineFieldDescriptor('id', 'title_id', self::$entityName)]; $filter = ['title_id' => null]; foreach ($filter as $key => $value) { $this->doctrineListBuilder->addField($fieldDescriptors[$key]); $this->doctrineListBuilder->where($fieldDescriptors[$key], $value); } $this->queryBuilder->expects($this->once())->method('andWhere')->with('(SuluCoreBundle:Example.id IS NULL)'); $this->doctrineListBuilder->execute(); }
public function testSetWhereNot() { $fieldDescriptors = ['title_id' => new DoctrineFieldDescriptor('id', 'title_id', self::$entityName), 'desc_id' => new DoctrineFieldDescriptor('id', 'desc_id', self::$entityName)]; $filter = ['title_id' => 3, 'desc_id' => 1]; foreach ($filter as $key => $value) { $this->doctrineListBuilder->addSelectField($fieldDescriptors[$key]); $this->doctrineListBuilder->where($fieldDescriptors[$key], $value, ListBuilderInterface::WHERE_COMPARATOR_UNEQUAL); } $this->assertCount(2, PHPUnit_Framework_Assert::readAttribute($this->doctrineListBuilder, 'expressions')); $expressions = PHPUnit_Framework_Assert::readAttribute($this->doctrineListBuilder, 'expressions'); $this->assertEquals(3, $expressions[0]->getValue()); $this->assertEquals(1, $expressions[1]->getValue()); $this->assertCount(2, PHPUnit_Framework_Assert::readAttribute($this->doctrineListBuilder, 'expressions')); $this->assertEquals('title_id', $expressions[0]->getFieldName()); $this->assertEquals('desc_id', $expressions[1]->getFieldName()); $this->doctrineListBuilder->execute(); }
/** * 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); } } }