コード例 #1
0
 /**
  * @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());
 }
コード例 #2
0
 /**
  * @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;
 }
コード例 #3
0
 /**
  * @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;
 }