yii 批量删除及CDBCriteria的常用方法

7 篇文章 0 订阅
5 篇文章 0 订阅

一.Yii批量删除的实现

1.首先,写button按钮:

视图中,columns下面声明checkbox代码:

array(
    'class' => 'CCheckBoxColumn',
    'selectableRows' => 2,
    'footer' => '<button type="button" οnclick="GetCheckbox();" style="width:76px">批量删除</button>',
    'checkBoxHtmlOptions' => array('name' => 'id[]'), //name在js中会用到
),
js代码:
<script type="text/javascript">
<!--   
   function GetCheckbox(){
        var data=new Array();
        $('input:checkbox[name="id[]"]').each(function (){
            //根据上边定义checkbox名字获取选中项,然后放到数组
            if($(this).attr("checked")=="checked"){
                data.push($(this).val());
            }
        });
        if(data.length > 0){
	        if (confirm("确认要删除?")) {
	            $.post('index.php?r=PjTxnUp/DelAll',{'id[]':data}, function (data) {
	                var ret = $.parseJSON(data);
	                //方法一:
	               	if(ret.success==true)
	               	{
	               		location.reload(); 
	               	}
	               	else
	               	{
						alert("删除失败,请重新操作.");
	               	}
	               	//方法二
	               	//if (ret != null && ret.success != null && ret.success) {
	                   // $.fn.yiiGridView.update('news-grid'); //这里是CGridView中定义的id
	               // }
	                
	            });
	        }
        }else{
            alert("请选择要删除的关键字!");
        }
    }
-->
</script>

2.js中post请求的控制器中写逻辑代码:

public function actionDelall() {
        if (Yii::app()->request->isPostRequest) {
            $criteria = new CDbCriteria;
            $criteria->addInCondition('id', $_POST['id']);
            News::model()->deleteAll($criteria); //News换成你的模型

            if (isset(Yii::app()->request->isAjaxRequest)) {
                echo CJSON::encode(array('success' => true));
            } else
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('index'));
        }
        else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

注意:要给这个action授权权限,在accessRules中赋予


二.CDBCriteria的常用方法

$criteria = new CDbCriteria;      

$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,  

                                //即如果第二个参数是数组就会调用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; //是否唯一查询
//多表查询
$criteria=new CDbCriteria;
$criteria->alias = 'Invoice';
$criteria->join='LEFT JOIN Client ON Client.id=Invoice.clientId';
$criteria->condition='Client.businessId='. Yii::app()->userInfo->business;

另:附上一些View层常用的数据展示方法:

 
<?php $this->widget('zii.widgets.grid.CGridView', array(  
 'id'=>'chapter-grid',  
 'dataProvider'=>$model->search(),  //数据结果集  
 'filter'=>$model,       
 'columns'=>array(  
      'id',  
      //锚点<a href="http://www.gulianqiang.com/"></a>  
       array(  
              'name'=>'name',  
              'type'=>'raw',  
              'value'=>'CHtml::link($data->name,"/book/$data->id")',  
         ),  
      //图片  
       array(  
              'name'=>'image',  
              'type'=>'image',  
              'value'=>'LImages::getPath("book").$data->image',//图片相对路径  
         ),  
       //下拉列表  
        array(  
              'name'=>'type',  
              'value'=>'Lookup::item("chapterType",$data->type)',  
              'filter'=>Lookup::items('chapterType'),  
         ),  
       //内容截取  
        array(  
              'name'=>'content',  
              'type'=>'html',  
              'value'=>'mb_substr(htmlspecialchars_decode($data->content),0,100,"utf-8")',  
         ),  
               //时间  
        array(  
              'name'=>'create_time',  
              'type'=>'datetime',  
         ),  
       // 根据相关信息读数据库  
        array(  
              'name'=>'user_id',  
              'value'=>'User::model()->findbyPk($data->user_id)->username',  
              'filter'=>false,  
         ),  
  array(  
   'class'=>'CButtonColumn',  
  ),  
 ),  
)); ?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值