Jinhui Zhu преди 5 години
родител
ревизия
1c3c9dbd8b
променени са 1 файла, в които са добавени 59 реда и са изтрити 26 реда
  1. 59 26
      src/Driver/Base.php

+ 59 - 26
src/Driver/Base.php

@@ -22,7 +22,6 @@ class Base
         "GROUP" => " GROUP BY %s",
         "LIMIT" => " LIMIT %d, %d"
     );
-    private $query;
     private $setArray = array();
     public $modelSQL = "";
     protected $fields;
@@ -538,14 +537,24 @@ class Base
     /**
      *
      * 查询的字段
-     * @param String $fileds
+     * @param String $fields
      */
-    final function fields($fileds = "*")
+    final function fields($fields = "*")
     {
         $this->fields = null;
-        if (empty($fileds)) $fileds = "*";
-        if (is_array($fileds)) $fileds = join(',', $fileds);
-        $this->fields = $fileds;
+        if (empty($fields)) $fields = "*";
+        if (is_array($fields)) {
+            foreach($fields as $key => $val)
+            {
+                $alias = explode('.', $val);
+                if(count($alias) > 1)
+                {
+                    $fields[$key] = $alias[0] . ".`".join(".", array_slice($alias, 1))."`";
+                }
+            }
+            $fields = join(',', $fields);
+        }
+        $this->fields = $fields;
         return $this;
     }
 
@@ -743,9 +752,36 @@ class Base
         return $this;
     }
     /**
-     * OR条件, 参数为数值
+     * 操作where条件语句
+     *
+     * @param $and
+     * @param string $insideBrackets or条件里边的操作符
+     * @param string $outsideBrackets 链接or条件的操作符
+     * @return $this
      */
-    final function or($or, $opt = "AND")
+    final function and($and, $insideBrackets = "OR", $outsideBrackets = "AND") {
+        return $this->or($and, $insideBrackets, $outsideBrackets);
+    }
+    /**
+     * 操作where条件语句
+     *
+     * @param $or
+     * @param string $insideBrackets or条件里边的操作符
+     * @param string $outsideBrackets 链接or条件的操作符
+     * @return $this
+     */
+    final function andStr($or, $insideBrackets = "AND", $outsideBrackets = "OR") {
+        return $this->orStr($or, $insideBrackets, $outsideBrackets);
+    }
+    /**
+     * 操作where条件语句
+     *
+     * @param $or
+     * @param string $insideBrackets or条件里边的操作符
+     * @param string $outsideBrackets 链接or条件的操作符
+     * @return $this
+     */
+    final function or($or, $insideBrackets = "AND", $outsideBrackets = "OR")
     {
         if(empty($or)) return $this;
         $orCond = array();
@@ -754,23 +790,32 @@ class Base
                 $orCond[] = sprintf($this->_query['OR'], $key, $this->setQuote($val));
             }
         }
+        else
+        {
+            $orCond[] = $or;
+        }
         if(!empty($this->where)) {
-            $this->where .= " OR (". join(" ". $opt . " ", $orCond) .")";
+            $this->where .= " ". $outsideBrackets. "  (". join(" ". $insideBrackets . " ", $orCond) .")";
         }else{
-            $this->where = " WHERE (". join(" ". $opt . " ", $orCond) .")";
+            $this->where = " WHERE (". join(" ". $insideBrackets . " ", $orCond) .")";
         }
         return $this;
     }
     /**
-     *  OR 条件,参数为字符串
+     * 操作where条件语句
+     *
+     * @param $or
+     * @param string $insideBrackets or条件里边的操作符
+     * @param string $outsideBrackets 链接or条件的操作符
+     * @return $this
      */
-    final function orStr($or, $opt = "OR") {
+    final function orStr($or, $insideBrackets = "AND", $outsideBrackets = "OR") {
         if(empty($or)) return $this;
         if(is_array($or)) {
-            $or = join(" ". $opt . " ", $or);
+            $or = join(" ". $insideBrackets . " ", $or);
         }
         if(!empty($this->where)) {
-            $this->where .= " ". $opt ." (". $or . ")";
+            $this->where .= " ". $outsideBrackets ." (". $or . ")";
         }
         return $this;
     }
@@ -955,16 +1000,6 @@ class Base
         }
         return $this;
     }
-    /**
-     * 执行更新操作,updateRows的alias
-     * @param String $table
-     * @return number
-     */
-    /*
-    final function update($table){
-        return $this->updateRows($table);
-    }
-    */
     /**
      *
      * 执行更新操作
@@ -1059,7 +1094,6 @@ class Base
                 return toUtf8($n);
             }, $str);
         }
-
         return toUtf8($str);
     }
 
@@ -1078,7 +1112,6 @@ class Base
             }
             \Qii::setError(false, __LINE__, 1506, 'Alias ' . get_called_class() . '->' . $method . '()');
         }
-
         \Qii::setError(false, __LINE__, 1506, get_called_class() . '->' . $method . '()');
     }
 }