/** * Test filters * * @param array $filterData * @test * @dataProvider filterDataProvider */ public function filterTest($filterData = []) { $filter = \Magelight\Db\CollectionFilter::forge($filterData); $data = $filter->getFilterMethods(); $this->assertEquals(is_array($data), true); $this->assertTrue(isset($data[0]['statement'])); $this->assertTrue(isset($data[0]['field'])); $this->assertTrue(isset($data[0]['value'])); }
/** * Apply filter to collection * * @param CollectionFilter $filter * * @return Collection */ public function applyFilter(CollectionFilter $filter) { $filterExpression = $filter->getFilterExpression(); if ($filterExpression instanceof ExpressionInterface && !$filterExpression->isEmpty()) { $this->getDataSource()->whereEx($filterExpression); return $this; } /** * For backward compatibility * @todo remove this and migrate to new expression filter */ foreach ($filter->getFilterMethods() as $method) { $statement = $method['statement']; $field = $method['field']; $value = $method['value']; $this->getDataSource()->{$statement}($field, $value); } return $this; }
/** * Get collection filter from form * * @return mixed */ public function getCollectionFilter() { return \Magelight\Db\CollectionFilter::forge($this->getRequestFields()); }