示例#1
0
文件: Union.php 项目: harp-orm/query
 /**
  * Render a Union object
  * @param  Query\Union $query
  * @return string
  */
 public static function render(Query\Union $query)
 {
     return Compiler::withDb($query->getDb(), function () use($query) {
         return Compiler::expression(array(Arr::join(' UNION ', Arr::map(function (Query\Select $select) {
             return Compiler::braced(Select::render($select));
         }, $query->getSelects())), Compiler::word('ORDER BY', Direction::combine($query->getOrder())), Compiler::word('LIMIT', $query->getLimit())));
     });
 }
示例#2
0
文件: Insert.php 项目: harp-orm/query
 /**
  * Render a Insert object
  * @param  Query\Insert $query
  * @return string
  */
 public static function render(Query\Insert $query)
 {
     return Compiler::withDb($query->getDb(), function () use($query) {
         $table = $query->getTable();
         $select = $query->getSelect();
         return Compiler::expression(array('INSERT', $query->getType(), Compiler::word('INTO', $table !== null ? Aliased::render($table) : null), Columns::render($query->getColumns()), Compiler::word('VALUES', Values::combine($query->getValues())), Compiler::word('SET', Set::combine($query->getSet())), $select !== null ? Select::render($select) : null));
     });
 }
示例#3
0
 /**
  * Render a Condition object
  *
  * @param  SQL\Condition $condition
  * @return string
  */
 public static function render(SQL\Condition $condition)
 {
     $content = $condition->getContent();
     $parameters = $condition->getParameters();
     if ($parameters and is_string($content)) {
         $content = self::expandParameterArrays($content, $parameters);
     }
     return Compiler::expression(array(Compiler::name($condition->getColumn()), $content));
 }
示例#4
0
 /**
  * Render SQL for Aliased
  *
  * @param  SQL\Aliased $aliased
  * @return string
  */
 public static function render(SQL\Aliased $aliased)
 {
     $content = $aliased->getContent();
     if ($content instanceof Query\Select) {
         $content = "(" . Select::render($content) . ")";
     } else {
         $content = Compiler::name($content);
     }
     return Compiler::expression(array($content, Compiler::word('AS', Compiler::name($aliased->getAlias()))));
 }
示例#5
0
文件: Update.php 项目: harp-orm/query
 /**
  * Render Update object
  * @param  Query\Update $query
  * @return string
  */
 public static function render(Query\Update $query)
 {
     return Compiler::withDb($query->getDb(), function () use($query) {
         return Compiler::expression(array('UPDATE', $query->getType(), Aliased::combine($query->getTable()), Join::combine($query->getJoin()), Compiler::word('SET', Set::combine($query->getSet())), Compiler::word('WHERE', Condition::combine($query->getWhere())), Compiler::word('ORDER BY', Direction::combine($query->getOrder())), Compiler::word('LIMIT', $query->getLimit())));
     });
 }
示例#6
0
文件: Select.php 项目: harp-orm/query
 /**
  * Render a Select object
  * @param  Query\Select $query
  * @return string
  */
 public static function render(Query\Select $query)
 {
     return Compiler::withDb($query->getDb(), function () use($query) {
         return Compiler::expression(array('SELECT', $query->getType(), Aliased::combine($query->getColumns()) ?: '*', Compiler::word('FROM', Aliased::combine($query->getFrom())), Join::combine($query->getJoin()), Compiler::word('WHERE', Condition::combine($query->getWhere())), Compiler::word('GROUP BY', Direction::combine($query->getGroup())), Compiler::word('HAVING', Condition::combine($query->getHaving())), Compiler::word('ORDER BY', Direction::combine($query->getOrder())), Compiler::word('LIMIT', $query->getLimit()), Compiler::word('OFFSET', $query->getOffset())));
     });
 }
示例#7
0
 /**
  * Render a Direction object
  *
  * @param  SQL\Direction $item
  * @return string
  */
 public static function render(SQL\Direction $item)
 {
     return Compiler::expression(array(Compiler::name($item->getContent()), $item->getDirection()));
 }
示例#8
0
文件: Join.php 项目: harp-orm/query
 /**
  * Render a Join object
  *
  * @param  SQL\Join $join
  * @return string
  */
 public static function render(SQL\Join $join)
 {
     $condition = $join->getCondition();
     $table = $join->getTable();
     return Compiler::expression(array($join->getType(), 'JOIN', $table instanceof SQL\Aliased ? Aliased::render($table) : $table, is_array($condition) ? self::renderArrayCondition($condition) : $condition));
 }
示例#9
0
文件: Set.php 项目: harp-orm/query
 /**
  * Render a Set object
  * @param  SQL\Set $item
  * @return string
  */
 public static function render(SQL\Set $item)
 {
     return Compiler::expression(array(Compiler::name($item->getContent()), '=', self::renderValue($item)));
 }
示例#10
0
 /**
  * @dataProvider dataExpression
  * @covers ::expression
  */
 public function testExpression($array, $expected)
 {
     $this->assertEquals($expected, Compiler::expression($array));
 }