示例#1
0
 public function data($sColumnName)
 {
     $arrRawSet =& $this->rawClause(SQL::CLAUSE_SET);
     if (isset($arrRawSet['subtree'][$sColumnName])) {
         return SqlCompiler::singleton()->compile($arrRawSet['subtree'][$sColumnName]['subtree']);
     }
 }
示例#2
0
 public function compile(SqlCompiler $aSqlCompiler, array &$arrTokenTree, array &$arrToken, array &$arrFactors = null)
 {
     // 处理表名
     if ($arrToken['expr_type'] === 'table') {
         $sTable = $arrToken['table'];
         $sAlias = empty($arrToken['as']) ? null : $arrToken['as'];
         // 表名称转换
         if ($this->arrTableNameTranslaters) {
             foreach ($this->arrTableNameTranslaters as &$translaters) {
                 list($sTable, $sAlias) = call_user_func($translaters, $sTable, $sAlias, $arrToken, $arrTokenTree);
             }
         }
         $sSql = '`' . $sTable . '` ';
         if ($sAlias) {
             $sSql .= 'AS `' . $sAlias . '` ';
         }
         // 处理 join 子句
         $sSql .= $aSqlCompiler->compile($arrToken, $arrFactors, $arrTokenTree);
         return $sSql;
     } else {
         if ($arrToken['expr_type'] === 'column') {
             $sTable = empty($arrToken['table']) ? null : $arrToken['table'];
             $sColumn = $arrToken['column'];
             $sAlias = empty($arrToken['as']) ? null : $arrToken['as'];
             // 字段名称转换
             if ($this->arrColumnNameTranslaters) {
                 foreach ($this->arrColumnNameTranslaters as &$translaters) {
                     list($sTable, $sColumn, $sAlias) = call_user_func($translaters, $sTable, $sColumn, $sAlias, $arrToken, $arrTokenTree);
                 }
             }
             $sSql = $sTable ? '`' . $sTable . '`.' : '';
             $sSql .= $sColumn === '*' ? $sColumn : '`' . $sColumn . '`';
             if ($sAlias) {
                 $sSql .= ' AS `' . $sAlias . '`';
             }
             return $sSql;
         }
     }
 }
示例#3
0
文件: SQL.php 项目: JeCat/framework
 /**
  * @return parser\SqlCompiler
  */
 public static function compiler()
 {
     return compiler\SqlCompiler::singleton();
 }