第一种:当咱们传过来的搜索条件是一个数组的时候,以下图php
像这样的状况,能够这样处理,css
由于sql语句支持in类型,也就是说支持下面这种搜索,sql
$cateStr = '(1,2,3)'; $ArticleInfo = Article::model() -> findAll("article_category_id in {$cateStr});
$cateStr = '(' . implode(',', array_values($search['article_category_id'])) . ')';
if( $search['wasteStage'] ) { $str = '(' . implode(',', array_values($search['wasteStage'])) . ')'; $wasteRecordModel = WasteRecord::model() -> findAll("waste_stage in {$str}"); $wasteRecordStageList = array(); foreach ( (array) $wasteRecordModel as $key => $val ) { $wasteRecordStageList[$key] = $val -> yuyue_id; } $criteria -> addInCondition('yuyueVisit.yuyue_id', $wasteRecordStageList); }
但是由于产品的变态需求,页面要的是这样的,数组
前面这个所有,咱们该怎么处理,用全等“===”来断定null,也能够,可是更变态的来了,页面中须要控制css样式,这样就很难维持选中的css样式,this
个人方法是这样的,以下图:spa
$wasteReasonKeys = array_keys($this -> _wasteReason); foreach( $wasteReasonKeys as $key => $val) { <span style="white-space:pre"> </span>$wasteReasonNewKeys[$key] = $val +1; } $wasteReasonNewValues = array_values($this -> _wasteReason); $wasteReasonList = array_combine($wasteReasonNewKeys, $wasteReasonNewValues);
key值就是从1开始了,这样,判断条件是所有的时候,就依然能够用0来判断了。code
固然了,做为搜索条件,确定要符合系统中的key值才能够,因此在搜索的时候须要进一步处理,以下,
产品
if( $search['wasteReason'] ) { <span style="white-space:pre"> </span>$wasteReasonId = intval($search['wasteReason']) - 1; //这里获得的值必需要减去1,由于在上面作了加1的处理。 if( $wasteReasonId >= 0 ) { $yuyueId = WasteRecord::model() -> findAll("waste_status = '{$wasteReasonId}'"); <span style="white-space:pre"> </span>$yuyueIdArr = array(); foreach ( (array) $yuyueId as $key => $val ) { $yuyueIdArr[$key] = $val -> yuyue_id; } $criteria -> addInCondition('yuyue.yuyue_id', $yuyueIdArr); } }