$criteria = new CDbCriteria; //select $criteria->select = '*';//默認* $criteria->select = 'id,name';//指定的字段 $criteria->select = 't.*,t.id,t.name';//鏈接查詢時,第一個表as t,因此用t.* $criteria->distinct = FALSE; //是否惟一查詢 //join $criteria->join = 'left join table2 t2 on(t.id=t2.tid)'; //鏈接表 $criteria->with = 'xxx'; //調用relations //where 查詢數字字段 $criteria->addCondition("id=1"); //查詢條件,即where id = 1 $criteria->addBetweenCondition('id', 1, 4);//between 1 and 4 $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 //where 查詢字符串字段 $criteria->addSearchCondition('name', '分類');//搜索條件,其實表明了。。where name like '%分類%' //where 查詢日期字段 $criteria->addCondition("create_time>'2012-11-29 00:00:00'"); $criteria->addCondition("create_time<'2012-11-30 00:00:00'"); //where and or $criteria->addCondition('id=1','OR');//這是OR條件,多個條件的時候,該條件是OR而非AND //這個方法比較特殊,他會根據你的參數自動處理成addCondition或者addInCondition, //即若是第二個參數是數組就會調用addInCondition $criteria->compare('id', 1); /** * 傳遞參數 */ $criteria->addCondition("id = :id"); $criteria->params[':id']=1; //order $criteria->order = 'xxx DESC,XXX ASC' ;//排序條件 //group $criteria->group = 'group 條件'; $criteria->having = 'having 條件 '; //limit $criteria->limit = 10; //取1條數據,若是小於0,則不做處理 $criteria->offset = 1; //兩條合併起來,則表示 limit 10 offset 1,或者表明了。limit 1,10
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;//是否惟一查詢
CDbCriteria 公共屬性: CDbCriteria.alias string 類型 表別名. 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() 附加一個條件到已存在的條件中