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 testCreate() { $class = new FinalJoinTrait(); $class->addClause((new FromClause())->setTable('tbl')); $class->join(TableExpression::create('tbl2'), 'email'); $this->assertEquals("FROM tbl INNER JOIN tbl2 ON tbl.email = tbl2.email", QueryAssembler::stringify($class)); $class->join('tbl3', 'user', 'user_id'); $this->assertEquals('FROM tbl INNER JOIN tbl2 ON tbl.email = tbl2.email ' . 'INNER JOIN tbl3 ON tbl.user = tbl3.user_id', QueryAssembler::stringify($class)); $class->joinWithPredicates(TableSelectExpression::createWithAlias('tbl4', 't4'), EqualPredicate::create(FieldExpression::createWithTable('email', 'tbl2'), FieldExpression::createWithTable('email', 't4'))); $this->assertEquals('FROM tbl INNER JOIN tbl2 ON tbl.email = tbl2.email ' . 'INNER JOIN tbl3 ON tbl.user = tbl3.user_id ' . 'INNER JOIN tbl4 AS t4 ON tbl2.email = t4.email', QueryAssembler::stringify($class)); }
public function set($field, $value) { /** * @var $this IStatement */ $set = $this->getClause('SET'); if ($set === null) { $set = new SetClause(); $this->addClause($set); } $set->addPredicate(EqualPredicate::create($field, $value)->forceOperator()); return $this; }
public function onDuplicateKeyUpdate($field, $value) { /** * @var $this IStatement * @var $clause DuplicateKeyClause */ $clause = $this->getClause('ONDUPLICATEKEYUPDATE'); if ($clause === null) { $clause = new DuplicateKeyClause(); $this->addClause($clause); } $clause->addPredicate(EqualPredicate::create($field, $value)->forceOperator()); return $this; }
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 testAssemble() { $predicate = new EqualPredicate(); $predicate->setField('field'); $this->assertEquals('field IS NULL', QueryAssembler::stringify($predicate)); $predicate->setExpression((new NumericExpression())->setValue(1)); $this->assertEquals('field = 1', QueryAssembler::stringify($predicate)); $predicate->setExpression((new NumericExpression())->setValue('1')); $this->assertEquals('field = 1', QueryAssembler::stringify($predicate)); $predicate->setExpression((new StringExpression())->setValue('abc')); $this->assertEquals('field = "abc"', QueryAssembler::stringify($predicate)); $predicate = EqualPredicate::create('field', null); $this->assertEquals('field IS NULL', QueryAssembler::stringify($predicate)); $predicate = EqualPredicate::create('field', 1); $this->assertEquals('field = 1', QueryAssembler::stringify($predicate)); $predicate = EqualPredicate::create('field', '1'); $this->assertEquals('field = "1"', QueryAssembler::stringify($predicate)); $predicate = EqualPredicate::create('field', 'abc'); $this->assertEquals('field = "abc"', QueryAssembler::stringify($predicate)); }
<?php use Packaged\QueryBuilder\Assembler\QueryAssembler; use Packaged\QueryBuilder\Builder\QueryBuilder; use Packaged\QueryBuilder\Predicate\EqualPredicate; use Packaged\QueryBuilder\SelectExpression\AllSelectExpression; include_once 'vendor/autoload.php'; for ($i = 0; $i < 100; $i++) { $start = microtime(true); $query = QueryBuilder::select(new AllSelectExpression()); $query->from('table'); $query->where(['a' => 'b', 'c' => 'd']); $query->andWhere([EqualPredicate::create('e', 'f'), EqualPredicate::create('g', 'h')]); QueryAssembler::stringify($query); echo "Completed In: " . (microtime(true) - $start); echo PHP_EOL; }
public function testIfExpression() { $this->assertEquals('IF(test = 4,123,321)', QueryAssembler::stringify(IfExpression::create(EqualPredicate::create('test', 4), 123, 321))); }
public function testCaseExpression() { $this->assertEquals('CASE WHEN(test = 4) THEN 123 ELSE 321 END', QueryAssembler::stringify(CaseExpression::create(EqualPredicate::create('test', 4), 123, 321))); }
/** * @expectedException \InvalidArgumentException * @expectedExceptionMessage Key must be numeric for ListFieldExpression */ public function testFailListFieldExpression() { EqualPredicate::create(ListFieldExpression::create('myfield', 'test'), 'test'); }
public function testMapFieldExpression() { $this->assertEquals("myfield['mykey'] = 'test'", CqlAssembler::stringify(EqualPredicate::create(MapFieldExpression::create('myfield', 'mykey'), 'test'))); }