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