利用类的属性来对时间区间的搜索
今天工作的时候遇到一个问题,一个模块的数据表只存了一个时间字段 add_time ,但是搜索是区间的。
这个时候就可以用我的办法来解决了。这个问题比较常见,故而整理下来。
<td > 操作时间 <input type="text" name="start_time" id="start_time" value="" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" size="15"> ~<input type="text" name="end_time" id="end_time" value="" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" size="15"> </td>
start_time 和 end_time 是数据库中没有的,
add_time 数据库中存储的是这个字段
接着需要在model中定义属性,start_time和end_time,因为需要在search方法中用到
public $startTime; public $endTime;
在执行搜索的控制器代码处,增加
$model->attributes = $_POST['queryParams']; $_GET['page'] = $_POST['page']; $model->startTime = $_POST['queryParams']['start_time']; $model->endTime = $_POST['queryParams']['end_time'];
这个时候程序对去找model中的search,在search方法中接着处理
$criteria=new CDbCriteria(); $criteria->compare('order_type',$this->order_type); $criteria->compare('order_id',$this->order_id); $criteria->compare('order_sn',$this->order_sn); $criteria->compare('operator',$this->operator); $criteria->compare('notes',$this->notes); $criteria->compare('front_show', $this->front_show); <span style="color:#ff0000;">if($this->endTime){ $criteria->addCondition('add_time <='.strtotime($this->endTime)); } if($this->startTime){ $criteria->addCondition('add_time >='.strtotime($this->startTime)); }</span> $criteria->order = 'order_id';
这样就解决了。
但是这样并不等于完成了,因为方法原理你明白了?
原理:
利用model类中的属性 start_time和end_time ,在执行这个方法的时候先给他们赋值,在执行search方法的时候再去调用赋的值。
Meet so Meet.
C plusplus
I-PLUS....
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步