注:$c=newCDbCriteria();是ActiveRecord的一種寫法,使ActiveRecord更加靈活,而不是手冊中DAO(PDO)和QueryBuilder。這是YiiCDbCriteria的一些筆記和常用用法:一、一個sql拼裝的情況
$criteria=newCDbCriteria;
$criteria->addCondition("id=1");//查詢條件,即whereid=1
$criteria->addInCondition('id',array(1,2,3,4,5));//代表whereidIN(1,23,,4,5,);
$criteria->addNotInCondition('id',array(1,2,3,4,5));//與上面正好相法,是NOTIN
$criteria->addCondition('id=1','OR');//這是OR條件,多個條件的時候,該條件是OR而非AND
$criteria->addSearchCondition('name','分類');//搜索條件,其實代表了。。wherenamelike'%分類%'
$criteria->addBetweenCondition('id',1,4);//between1and4
$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;//兩條合并起來,則表示limit10offset1,或者代表了。limit1,10
$criteria->order='xxxDESC,XXXASC';//排序條件
$criteria->group='group條件';
$criteria->having='having條件';
$criteria->distinct=FALSE;//是否唯一查詢
實例:
php代碼$criteria=newCDbCriteria();
$criteria->select='table_name,model_id,sum(amount)total';
$criteria->group='table_name,model_id';
$criteria->addCondition("$nIdcId=4");//也可以$criteria->condition="$nIdcId=4";
$aResult=accessory_info::model()->findAll($criteria);
$c=newCDbCriteria();
$c->select='t.id,t.created_at,t.outsource_id,t.user_id,t.Operate,t.content';
$c->join='LEFTJOINoutsourceONoutsource.id=t.outsource_id';
$c->condition='outsource.idc_idIN('.implode(',',$idc_ids).')';
if($last_log_id){
$c->condition.="ANDt.id>$last_log_id";
}
$c->limit=20;
$c->order='t.idDESC';
$logs=Outsource )); 原文轉自百度空間《Yii CDbCriteria 常用方法》
新聞熱點
疑難解答