/** * @test */ public function testLaravelTransformer() { $selectQuery = new SelectQueryParameters(); $selectQuery->where((new WhereParameter('foo', Operator::EQ, 'bar'))->or((new WhereParameter('bar', Operator::LT, 15))->and(new WhereParameter('cat', Operator::NEQ, 'catlab')))); $builder = $this->getQueryBuilder(); SelectQueryTransformer::toLaravel($builder, $selectQuery); $this->assertEquals('select * from "table" where "foo" = ? or ("bar" < ? and ("cat" != ?))', $builder->toSql()); }
/** * @param $request * @param $resourceDefinition * @param ContextContract $context * @param int $records * @return SelectQueryParameters */ public function getFilters($request, $resourceDefinition, Context $context, int $records = 10) { $definition = ResourceDefinitionLibrary::make($resourceDefinition); $queryBuilder = new SelectQueryParameters(); // Now check for query parameters foreach ($definition->getFields() as $field) { if ($field instanceof ResourceField && $field->isFilterable()) { $parameter = $this->propertyResolver->getParameterFromRequest($request, $field->getDisplayName()); if ($parameter) { $queryBuilder->where(new WhereParameter($field->getName(), Operator::EQ, $parameter)); } } } // Processors $context->getProcessors()->processFilters($this, $queryBuilder, $request, $definition, $context, $records); return $queryBuilder; }
/** * @param SelectQueryParameters $query * @param mixed[] * @return mixed[] * @throws InvalidArgumentException */ public function processResults(SelectQueryParameters $query, $results) { if (!ArrayHelper::isIterable($results)) { throw new InvalidArgumentException("Results should be iterable."); } if ($query->isReverse()) { $results = ArrayHelper::reverse($results); } // Set the first and the last values if (count($results) > 0) { $this->setFirst($results[0]); $this->setLast($results[count($results) - 1]); } return $results; }