public function testAssemble()
 {
     $statement = new DeleteStatement();
     $update = new DeleteClause();
     $update->setTable('tbl');
     $statement->addClause($update);
     $this->assertEquals('DELETE FROM tbl', QueryAssembler::stringify($statement));
     $where = new WhereClause();
     $where->addPredicate((new NotEqualPredicate())->setField('username'));
     $statement->addClause($where);
     $this->assertEquals('DELETE FROM tbl WHERE username IS NOT NULL', QueryAssembler::stringify($statement));
     $where->addPredicate((new LikePredicate())->setField('name')->setExpression(EndsWithExpression::create('Joh')));
     $this->assertEquals('DELETE FROM tbl ' . 'WHERE username IS NOT NULL AND name LIKE "%Joh"', QueryAssembler::stringify($statement));
 }
Esempio n. 2
0
 public function joinWithPredicates($table, ...$predicates)
 {
     if (empty($predicates)) {
         throw new \RuntimeException('No predicates specified for join');
     }
     $join = new JoinClause();
     $join->setTableName($table);
     $join->setPredicates(WhereClause::buildPredicates($predicates, $table));
     $this->addClause($join);
     return $this;
 }
Esempio n. 3
0
 private function _getNewSet(...$expressions)
 {
     $newPredicates = WhereClause::buildPredicates($expressions);
     if (count($newPredicates) === 1) {
         $newSet = Arrays::first($newPredicates);
     } else {
         $newSet = new PredicateSet();
         $newSet->setPredicates($newPredicates);
     }
     return $newSet;
 }
 public function testAssemble()
 {
     $statement = new QueryStatement();
     $select = new SelectClause();
     $select->addExpression(new AllSelectExpression());
     $statement->addClause($select);
     $this->assertEquals('SELECT *', QueryAssembler::stringify($statement));
     $from = new FromClause();
     $from->setTable('tbl');
     $statement->addClause($from);
     $this->assertEquals('SELECT * FROM tbl', QueryAssembler::stringify($statement));
     $where = new WhereClause();
     $where->addPredicate((new NotEqualPredicate())->setField('username'));
     $statement->addClause($where);
     $this->assertEquals('SELECT * FROM tbl WHERE username IS NOT NULL', QueryAssembler::stringify($statement));
     $where->addPredicate((new LikePredicate())->setField('name')->setExpression(StartsWithExpression::create('Joh')));
     $this->assertEquals('SELECT * FROM tbl ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%"', QueryAssembler::stringify($statement));
     $orderBy = new OrderByClause();
     $statement->addClause($orderBy);
     $orderBy->addField((new FieldExpression())->setField('user_id'));
     $this->assertEquals('SELECT * FROM tbl ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%" ' . 'ORDER BY user_id', QueryAssembler::stringify($statement));
     $orderBy->addField((new FieldExpression())->setField('age'), 'DESC');
     $this->assertEquals('SELECT * FROM tbl ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%" ' . 'ORDER BY user_id, age DESC', QueryAssembler::stringify($statement));
     $groupBy = new GroupByClause();
     $statement->addClause($groupBy);
     $groupBy->addField((new FieldExpression())->setField('role'));
     $this->assertEquals('SELECT * FROM tbl ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%" ' . 'GROUP BY role ' . 'ORDER BY user_id, age DESC', QueryAssembler::stringify($statement));
     $having = new HavingClause();
     $statement->addClause($having);
     $having->addPredicate((new LessThanPredicate())->setField('tasks')->setExpression((new NumericExpression())->setValue(4)));
     $this->assertEquals('SELECT * FROM tbl ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%" ' . 'GROUP BY role ' . 'HAVING tasks < 4 ' . 'ORDER BY user_id, age DESC', QueryAssembler::stringify($statement));
     $limit = new LimitClause();
     $limit->setLimit(10);
     $limit->setOffset(20);
     $statement->addClause($limit);
     $this->assertEquals('SELECT * FROM tbl ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%" ' . 'GROUP BY role ' . 'HAVING tasks < 4 ' . 'ORDER BY user_id, age DESC ' . 'LIMIT 20,10', QueryAssembler::stringify($statement));
 }
Esempio n. 5
0
 public function testNullBuilder()
 {
     $this->assertEquals("WHERE name IS NULL AND description IS NOT NULL", QueryAssembler::stringify(WhereClause::create(['name' => null, 'NOT' => ['description' => null]])));
 }
Esempio n. 6
0
 public function testNoPredicates()
 {
     $where = WhereClause::create();
     $where->addPredicate(new PredicateSet());
     $this->assertEquals('WHERE ', CqlAssembler::stringify($where));
 }
Esempio n. 7
0
 public function testInPredicate()
 {
     $this->assertEquals('WHERE field1 IN ("value1","value2")', QueryAssembler::stringify(WhereClause::create(['field1' => ['value1', 'value2']])));
     $this->setExpectedException('\\Packaged\\QueryBuilder\\Exceptions\\Assembler\\QueryBuilderAssemblerException', 'Cannot assemble an empty ArrayExpression');
     QueryAssembler::stringify(WhereClause::create(['field1' => []]));
 }