Example #1
0
 public function getDestination()
 {
     if (is_array($this->_dest)) {
         return FieldExpression::createWithTable($this->_dest[1], $this->_dest[0]);
     }
     return $this->_dest;
 }
 public function testAssemble()
 {
     $expression = MatchSelectExpression::create(FieldExpression::createWithTable('field1', 'table1'), StringExpression::create('this is a test search'));
     $this->assertEquals('MATCH (`table1`.`field1`) AGAINST ("this is a test search")', MySQLAssembler::stringify($expression));
     $expression->setAlias('score');
     $this->assertEquals('MATCH (`table1`.`field1`) AGAINST ("this is a test search") AS `score`', MySQLAssembler::stringify($expression));
 }
 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 setField($field, $table = null)
 {
     if ($field === null || $field instanceof IExpression) {
         $this->_field = $field;
     } else {
         $this->_field = FieldExpression::createWithTable($field, $table);
     }
     return $this;
 }
Example #5
0
 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));
 }
Example #6
0
 public static function buildPredicates(array $input, $table = null, $inverse = false)
 {
     $predicates = [];
     foreach ($input as $key => $value) {
         if ($value === null || is_scalar($value) || $value instanceof ValueExpression) {
             $pred = $inverse ? new NotEqualPredicate() : new EqualPredicate();
             $pred->setField(FieldExpression::createWithTable($key, $table));
             if (!$value instanceof ValueExpression) {
                 $value = ValueExpression::create($value);
             }
             $pred->setExpression($value);
             $predicates[] = $pred;
         } else {
             if ($value instanceof IPredicate) {
                 $predicates[] = $value;
             } else {
                 if (is_array($value)) {
                     if (is_int($key)) {
                         $predicates = array_merge($predicates, static::buildPredicates($value, $table, $inverse));
                     } else {
                         if (static::_isControlKeyword($key)) {
                             switch ($key) {
                                 case 'NOT':
                                     $predicates = array_merge($predicates, static::buildPredicates($value, $table, true));
                                     break;
                                 case 'OR':
                                     $pred = new OrPredicateSet();
                                     $pred->setPredicates(static::buildPredicates($value, $table, $inverse));
                                     $predicates[] = $pred;
                                     break;
                                 case 'AND':
                                     $pred = new PredicateSet();
                                     $pred->setPredicates(static::buildPredicates($value, $table, $inverse));
                                     $predicates[] = $pred;
                                     break;
                             }
                         } else {
                             $pred = $inverse ? new NotInPredicate() : new InPredicate();
                             $pred->setField(FieldExpression::createWithTable($key, $table));
                             $pred->setExpression(ArrayExpression::create($value));
                             $predicates[] = $pred;
                         }
                     }
                 }
             }
         }
     }
     return $predicates;
 }
 public function testAssemble()
 {
     $expression = MatchExpression::create(FieldExpression::createWithTable('field1', 'table1'), StringExpression::create('this is a test search'));
     $expression->addField(FieldExpression::createWithTable('field2', 'table2'));
     $this->assertEquals('MATCH (`table1`.`field1`,`table2`.`field2`) AGAINST ("this is a test search")', MySQLAssembler::stringify($expression));
     $expression->setSearchModifier(MatchExpression::BOOLEAN_MODE);
     $this->assertEquals('MATCH (`table1`.`field1`,`table2`.`field2`) AGAINST ("this is a test search" IN BOOLEAN MODE)', MySQLAssembler::stringify($expression));
     $expression->setSearchModifier(MatchExpression::WITH_QUERY_EXPANSION);
     $this->assertEquals('MATCH (`table1`.`field1`,`table2`.`field2`) AGAINST ("this is a test search" WITH QUERY EXPANSION)', MySQLAssembler::stringify($expression));
     $expression->setSearchModifier(MatchExpression::BOOLEAN_MODE);
     $stmt = QueryBuilder::select(AllSelectExpression::create())->from('tbl')->where(GreaterThanPredicate::create($expression, 0))->limit(5);
     $assembler = new MySQLAssembler($stmt);
     $this->assertEquals('SELECT * FROM `tbl` WHERE MATCH (`table1`.`field1`,`table2`.`field2`) AGAINST (? IN BOOLEAN MODE) > ? LIMIT ?', $assembler->getQuery());
     $this->assertEquals(['this is a test search', 0, 5], $assembler->getParameters());
 }
 public function testTableName()
 {
     $this->assertEquals('"mytable"."myfield"', CqlAssembler::stringify(FieldExpression::createWithTable('myfield', 'mytable')));
 }
 public function testTableName()
 {
     $this->assertEquals('`mytable`.`myfield`', MySQLAssembler::stringify(FieldExpression::createWithTable('myfield', 'mytable')));
     $this->assertEquals('`mytable`', MySQLAssembler::stringify(TableExpression::create('mytable')));
 }