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; }
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')))); }