public function testGettersAndSetters()
 {
     $predicate = new BetweenPredicate();
     $predicate->setValues((new NumericExpression())->setValue(1), (new NumericExpression())->setValue(5));
     $this->assertEquals([(new NumericExpression())->setValue(1), (new NumericExpression())->setValue(5)], $predicate->getRangeValues());
     $this->assertEquals((new NumericExpression())->setValue(1), $predicate->getRangeStart());
     $this->assertEquals((new NumericExpression())->setValue(5), $predicate->getRangeEnd());
     $predicate->setField('test');
     $this->assertEquals(FieldExpression::create('test'), $predicate->getField());
 }
 public function assembleBetweenPredicate(BetweenPredicate $predicate)
 {
     $start = $this->_assemblePrepared($predicate->getRangeStart()) ?: $this->assembleSegment($predicate->getRangeStart());
     $end = $this->_assemblePrepared($predicate->getRangeEnd()) ?: $this->assembleSegment($predicate->getRangeEnd());
     $not = $predicate instanceof NotBetweenPredicate ? ' NOT' : '';
     return $this->assembleSegment($predicate->getField()) . $not . ' BETWEEN ' . $start . ' AND ' . $end;
 }
 public function testAssemblerPrepare()
 {
     $stm = new QueryStatement();
     $stm->addClause(new SelectClause())->from('mytable');
     $stm->where(EqualPredicate::create('field1', 'value1'));
     $assembler = new QueryAssembler($stm, false);
     $this->assertEmpty($assembler->getParameters());
     $this->assertFalse($assembler->isForPrepare());
     $this->assertEquals('SELECT * FROM mytable WHERE field1 = "value1"', (string) $assembler);
     $stm->andWhere(['AND' => [EqualPredicate::create('field2', null), NotEqualPredicate::create('field3', null)], 'OR' => BetweenPredicate::create('field4', 123, 456)]);
     $assembler = new QueryAssembler($stm, true);
     $this->assertNotEmpty($assembler->getParameters());
     $this->assertTrue($assembler->isForPrepare());
     $this->assertEquals('SELECT * FROM mytable WHERE field1 = ? AND ((field2 IS NULL AND field3 IS NOT NULL) AND field4 BETWEEN ? AND ?)', (string) $assembler);
     $this->assertEquals(['value1', 123, 456], $assembler->getParameters());
 }
 public function testBetween()
 {
     $predicate = new NotBetweenPredicate();
     $predicate->setField('field');
     $predicate->setValues((new NumericExpression())->setValue(1), (new NumericExpression())->setValue(5));
     $this->assertEquals('"field" <= 1 AND "field" >= 5', CqlAssembler::stringify($predicate));
     $predicate = new BetweenPredicate();
     $predicate->setField('field');
     $this->assertEquals('"field" >= NULL AND "field" <= NULL', CqlAssembler::stringify($predicate));
     $predicate->setValues((new NumericExpression())->setValue(1), (new NumericExpression())->setValue(5));
     $this->assertEquals('"field" >= 1 AND "field" <= 5', CqlAssembler::stringify($predicate));
     $predicate->setValues((new NumericExpression())->setValue('1'), (new NumericExpression())->setValue('5'));
     $this->assertEquals('"field" >= 1 AND "field" <= 5', CqlAssembler::stringify($predicate));
     $predicate->setValues((new StringExpression())->setValue('abc'), (new StringExpression())->setValue('def'));
     $this->assertEquals('"field" >= \'abc\' AND "field" <= \'def\'', CqlAssembler::stringify($predicate));
     $set = new PredicateSet();
     $set->addPredicate($predicate);
     $set->addPredicate(BetweenPredicate::create('field2', 123, 456));
     $this->assertEquals('"field" >= \'abc\' AND "field" <= \'def\' AND "field2" >= 123 AND "field2" <= 456', CqlAssembler::stringify($set));
 }
Beispiel #5
0
 public function assembleBetween(BetweenPredicate $betweenPredicate)
 {
     $gte = new GreaterThanOrEqualPredicate();
     $gte->setField($betweenPredicate->getField());
     $lte = new LessThanOrEqualPredicate();
     $lte->setField($betweenPredicate->getField());
     $set = new PredicateSet();
     if ($betweenPredicate instanceof NotBetweenPredicate) {
         $gte->setExpression($betweenPredicate->getRangeEnd());
         $lte->setExpression($betweenPredicate->getRangeStart());
         $set->addPredicate($lte);
         $set->addPredicate($gte);
     } else {
         $gte->setExpression($betweenPredicate->getRangeStart());
         $lte->setExpression($betweenPredicate->getRangeEnd());
         $set->addPredicate($gte);
         $set->addPredicate($lte);
     }
     return $this->assembleSegment($set);
 }