代表一個標準的查詢, 如條件,order by和limit.
它是一個數據封裝對象,相當於SQL語句的各部分的載體
CDbCriteria 公共屬性:
CDbCriteria.alias
CDbCriteria.condition string 類型 查詢條件
CDbCriteria.distinct boolean 類型 是否只選擇不相同的數據行
CDbCriteria.group string 類型 如何進行分組查詢結果
CDbCriteria.having string 類型 作爲GROUP-BY子句的條件
CDbCriteria.index string 類型 作爲查詢結果數組的索引
CDbCriteria.join string 類型 如何加入其它的表
CDbCriteria.limit integer 類型 要返回最大記錄值
CDbCriteria.offset integer 類型 要返回從0開始的偏移量
CDbCriteria.order string 類型 如何對結果進行排序
CDbCriteria.paramCount integer 類型綁定域名的全局記數器
CDbCriteria.param array 類型 以參數佔位符爲索引的查詢參數列表
CDbCriteria.scopes mixed 類型 定義多個查詢條件,進行組合
CDbCriteria.select mixed 類型 被選中的列
CDbCriteria.with mixed 類型 相關聯的查詢標準
CDbCriteria.addBetweenCondition() 添加一個between條件到條件屬性中
CDbCriteria.addColumnCondition() 附加一個相匹配的列值的條件
CDbCriteria.addCondition() 附加一個條件到已存在的條件中
---------------------------------------------------------------------------
Yii的Active Recorder包裝了很多。
特別是把SQL中 把where,order,limit,IN/not IN,like等常用短句都包含進CDbCriteria這個類中去,這樣整個代碼會比較規範,一目瞭然。
$criteria =newCDbCriteria;
$criteria->addCondition("id=1"); //查詢條件,即where id =1
$criteria->addInCondition('id', array(1,2,3,4,5));//代表where id IN (1,23,,4,5,);
$criteria->addNotInCondition('id',array(1,2,3,4,5));//與上面正好相法,是NOT IN
$criteria->addCondition('id=1','OR');//這是OR條件,多個條件的時候,該條件是OR而非AND
$criteria->addSearchCondition('name','分類');//搜索條件,其實代表了。。where name like '%分類%'
$criteria->addBetweenCondition('id', 1, 4);//between1 and 4
$criteria->compare('id',1); //這個方法比較特殊,他會根據你的參數自動處理成addCondition或者addInCondition,
//即如果第二個參數是數組就會調用addInCondition
$criteria->addCondition("id = :id");
$criteria->params[':id']=1;
$criteria->select = 'id,parentid,name';//代表了要查詢的字段,默認select='*';
$criteria->join = 'xxx'; //連接表
$criteria->with = 'xxx';//調用relations
$criteria->limit =10; //取1條數據,如果小於0,則不作處理
$criteria->offset =1; //兩條合併起來,則表示 limit 10 offset1,或者代表了。limit 1,10
$criteria->order = 'xxx DESC,XXX ASC' ;//排序條件
$criteria->group = 'group 條件';
$criteria->having = 'having 條件 ';
$criteria->distinct = FALSE;//是否唯一查詢