一般在search()函数里

    $criteria = new CDbCriteria;     
    $criteria->addCondition("username='".Yii::app()->user->name."'");//获取传递当前登录用户
    $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);//between 1 and 4   
      
    $criteria->compare('id', 1);    //这个方法比较特殊,他会根据你的参数自动处理成addCondition或者addInCondition,        //即如果第二个参数是数组就会调用

   $criteria->compare('username',$input,true,'OR');

   $criteria->compare('number',$input,true,'OR');
   $criteria->compare('name',$input,true,'OR');//$operator should change to OR while default is AND addInCondition  

    /**    传递变量     */  
    $criteria->addCondition("id = :id");  
    $criteria->params[':id']=1;  
    /** 一些public vars */  
    $criteria->select = 'id,parentid,name'; //代表了要查询的字段,默认select='*';  
    $criteria->join = 'xxx'; //连接表  
    $criteria->with = 'xxx'; //调用relations   
    $criteria->limit = 10;    //取1条数据,如果小于0,则不作处理  
    $criteria->offset = 1;   //两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10  
    $criteria->order = 'xxx DESC,XXX ASC' ;//排序条件  
    $criteria->group = 'group 条件';  
    $criteria->having = 'having 条件 ';  
    $criteria->distinct = FALSE; //是否唯一查询  

转自:http://yxmhero1989.blog.163.com/blog/static/11215795620117121321815/