public function addField($field)
 {
     if (is_scalar($field)) {
         $field = FieldExpression::create($field);
     }
     $this->_fields[] = $field;
 }
 public function testStatics()
 {
     $this->assertEquals('(field_name T 5)', QueryAssembler::stringify(FinalAbstractArithmeticExpression::create(FieldExpression::create('field_name'), 5)));
     $this->assertEquals('(field_name T 5)', QueryAssembler::stringify(FinalAbstractArithmeticExpression::create(FieldExpression::create('field_name'), StringExpression::create(5))));
     $this->assertEquals('(tbl.field_name T 5)', QueryAssembler::stringify(FinalAbstractArithmeticExpression::create(FieldExpression::createWithTable('field_name', 'tbl'), 5)));
     $this->assertEquals('(tbl.field_name T 5)', QueryAssembler::stringify(FinalAbstractArithmeticExpression::create(FieldExpression::createWithTable('field_name', 'tbl'), StringExpression::create(5))));
 }
 public function testDuplicateKey()
 {
     $clause = new DuplicateKeyClause();
     $clause->addPredicate(EqualPredicate::create('field1', FieldExpression::create('field2')));
     $clause->addPredicate(EqualPredicate::create('field3', 5));
     $this->assertEquals('ON DUPLICATE KEY UPDATE field1 = field2, field3 = 5', QueryAssembler::stringify($clause));
 }
 public function testGettersAndSetters()
 {
     $predicate = new FinalAbstractOperatorPredicateTest();
     $predicate->setExpression((new NumericExpression())->setValue(1));
     $predicate->setField('test');
     $this->assertEquals(FieldExpression::create('test'), $predicate->getField());
     $this->assertEquals((new NumericExpression())->setValue(1), $predicate->getExpression());
 }
 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 testSettersAndGetters()
 {
     $selector = new FieldSelectExpression();
     $selector->setField('new_field');
     $this->assertEquals(FieldExpression::create('new_field'), $selector->getField());
     $selector->setAlias('alias');
     $this->assertEquals('alias', $selector->getAlias());
     $field = FieldExpression::create('testfield');
     $selector->setField($field);
     $this->assertSame($field, $selector->getField());
 }
 public function setPropertyArray($properties)
 {
     $this->_properties = [];
     foreach ($properties as $property) {
         if (Strings::containsAny($property, ['"', "'", ')'])) {
             $this->_properties[] = $property;
         } else {
             $this->_properties[] = FieldExpression::create($property);
         }
     }
     return $this;
 }
Example #8
0
 public function insertInto($table, ...$fields)
 {
     /**
      * @var $this     IStatement
      */
     $clause = new InsertClause();
     $this->addClause($clause);
     $clause->setTable($table);
     foreach ($fields as $field) {
         if (!$field instanceof FieldExpression) {
             $field = FieldExpression::create($field);
         }
         $clause->addField($field);
     }
     return $this;
 }
 public function testAssemble()
 {
     $statement = QueryBuilder::insertInto('tbl');
     $this->assertEquals('INSERT INTO tbl ()', QueryAssembler::stringify($statement));
     $statement = QueryBuilder::insertInto('tbl', 'field');
     $this->assertEquals('INSERT INTO tbl (field)', QueryAssembler::stringify($statement));
     $statement->insertInto('tbl', FieldExpression::create('id'), 'name');
     $this->assertEquals('INSERT INTO tbl (id, name)', QueryAssembler::stringify($statement));
     $statement->values(null, ValueExpression::create('Test'));
     $this->assertEquals('INSERT INTO tbl (id, name) ' . 'VALUES (NULL, "Test")', QueryAssembler::stringify($statement));
     $statement->values('row2v1', 'row2v2');
     $this->assertEquals('INSERT INTO tbl (id, name) ' . 'VALUES (NULL, "Test"), ("row2v1", "row2v2")', QueryAssembler::stringify($statement));
     $statement = QueryBuilder::insertInto('tbl', 'field1', 'field2')->values('value1', 'value2')->onDuplicateKeyUpdate('field1', IncrementExpression::create('field2', 1));
     $assembler = new QueryAssembler($statement);
     $this->assertEquals('INSERT INTO tbl (field1, field2) VALUES (?, ?) ON DUPLICATE KEY UPDATE field1 = field2 + ?', $assembler->getQuery());
     $this->assertEquals(['value1', 'value2', 1], $assembler->getParameters());
 }
 public function testAssemble()
 {
     $expression = new IncrementExpression();
     $expression->setField(FieldExpression::create('new_field'));
     $this->assertEquals('new_field + 0', QueryAssembler::stringify($expression));
     $expression->setIncrementValue('abc');
     $this->assertEquals('new_field + 0', QueryAssembler::stringify($expression));
     $expression->setIncrementValue('1');
     $this->assertEquals('new_field + 1', QueryAssembler::stringify($expression));
     $expression->setIncrementValue(1);
     $this->assertEquals('new_field + 1', QueryAssembler::stringify($expression));
     $stmt = QueryBuilder::update('tbl');
     $stmt->set('inc_field', $expression);
     $qa = new QueryAssembler($stmt);
     $this->assertEquals('UPDATE tbl SET inc_field = new_field + ?', $qa->getQuery());
     $this->assertEquals([1], $qa->getParameters());
 }
 public function setField($field)
 {
     $this->_field = is_scalar($field) ? FieldExpression::create($field) : $field;
     return $this;
 }
 public function testFieldName()
 {
     $this->assertEquals('`myfield`', MySQLAssembler::stringify(FieldExpression::create('myfield')));
 }
 public function testAssemble()
 {
     $expression = MultiplyExpression::create(FieldExpression::create('fieldname'), NumericExpression::create(4));
     $this->assertEquals('(fieldname * 4)', QueryAssembler::stringify($expression));
 }
 public function testSetExpression()
 {
     $this->assertEquals("{'test',1}", CqlAssembler::stringify(SetExpression::create(['test', 1])));
     $this->assertEquals("\"testfield\" + {'test'}", CqlAssembler::stringify(AdditionExpression::create(FieldExpression::create('testfield'), SetExpression::create('test'))));
 }
 public function testListExpression()
 {
     $this->assertEquals("['test',1]", CqlAssembler::stringify(ListExpression::create(['test', 1])));
     $this->assertEquals("\"testfield\" - ['test']", CqlAssembler::stringify(SubtractExpression::create(FieldExpression::create('testfield'), ListExpression::create('test'))));
 }
 public function testSetExpression()
 {
     $this->assertEquals("{'test':'myval','test2':2}", CqlAssembler::stringify(MapExpression::create(['test' => 'myval', 'test2' => 2])));
     $this->assertEquals("\"testfield\" + {'test'}", CqlAssembler::stringify(AdditionExpression::create(FieldExpression::create('testfield'), SetExpression::create('test'))));
 }