在yii使用过程中,我们经常要使用到 按时间区间来检索数据

用gridview自身的filter就无法满足我们得需求。

下面可以用插件的方式来搞定:

sydatecolumn

下载地址:http://www.yiiframework.com/extension/sydatecolumn/

1.复制SYDateColumn.php到components目录中。

这个类会自动生成以属性名加_range['from']和_range['to']为name的输入框,如果只用single的话,只有一个to.

2.修改model

因为加了与数据库字段不相关的model属性,所以这里我们定义一个属性

public $addtime_range = array();

function rules() {
  return array(

         ...

      array('....., addtime_range', 'safe', 'on'=>'search'),

3.修改search()方法

  //addtime_range
         $from = $to = '';
         if (count($this->addtime_range)>=1) {
             if (isset($this->addtime_range['from'])) {
                 $from = $this->addtime_range['from'];
             }
             if (isset($this->addtime_range['to'])) {
                 $to= $this->addtime_range['to'];
             }
         }

if ($from!='' || $to !='') {
             if ($from!='' && $to!='') {//当两框都选择时,则搜索这个区间的数据.
                 $from = date("Y-m-d", strtotime($from));
                 $to = date("Y-m-d", strtotime($to));
                 $criteria->compare('t.addtime',">=".strtotime($from));
                 $criteria->compare('t.addtime',"<=".strtotime($to));
             }
             else {//当只选择了一个框时,搜出这天的记录.
                 if ($from!='') $addtime = $from;
                 if ($to != '') $addtime = $to;
                 $addtime = date("Y-m-d", strtotime($addtime));

$criteria->compare('t.addtime',">=".strtotime($addtime));
                $criteria->compare('t.addtime',"<=".(strtotime($addtime)+86400));
             }
         }

//orderdate
         $to = '';
         if (isset($this->orderdate_range['to'])) {
             $to= $this->orderdate_range['to'];
         }
         if ($to!='') {
             $orderdate = date("Y-m-d", strtotime($to));
             $criteria->compare('orderdate',$orderdate,true);
         }
 4.修改view

  array(             
            'header'=>'时间',//具体设置每列的header  
            'name'=>'addtime',  
            'filter'=>'range',//可以设置的值为:range,single.
            'class'=>'SYDateColumn',            
            'htmlOptions'=>array('style'=>'width: 150px;text-align: center;'),
        ),

Yii 日期时间过滤列 filter的更多相关文章

  1. Angularjs在控制器(controller.js)的js代码中使用过滤器($filter)格式化日期/时间实例

    Angularjs内置的过滤器(filter)为我们的数据信息格式化提供了比较强大的功能,比如:格式化时间,日期.格式化数字精度.语言本地化.格式化货币等等.但这些过滤器一般都是在VIEW中使用的,比 ...

  2. PowerBI开发 第十五篇:DAX 表达式(时间+过滤+关系)

    DAX表达式中包含时间关系(Time Intelligence)相关的函数,用于对日期维度进行累加.同比和环比等分析.PowerBI能够创建关系,通过过滤器来对影响计算的上下文. 一,时间关系 DAX ...

  3. 表单(中)-EasyUI Combogrid 组合网格、EasyUI Numberbox 数字框、EasyUI Datebox 日期框、EasyUI Datetimebox 日期时间框、EasyUI Calendar 日历

    EasyUI Combogrid 组合网格 扩展自 $.fn.combo.defaults 和 $.fn.datagrid.defaults.通过 $.fn.combogrid.defaults 重写 ...

  4. dede日期时间标签调用大全

    dedecms最强大的功能就是调用标签,可以变换出各种样式的文章形式出来,本节将DEDECMS调用时间的样式做一个总结,基本所有的时间调用样式都有了,日期时间格式 (利用strftime()函数格式化 ...

  5. MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...

  6. UIDatePicker 日期/时间选取器(滚轮)—IOS开发

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  7. MySQL tips (日期时间操作/concat 等)

    1.  Query结尾要加一个分号: 2.  数据库和表 SHOW DATABASES;    USE YOUR_DB; SHOW TABLES; SHOW COLUMNS FROM study或者D ...

  8. ASP.NET C# 日期 时间 年 月 日 时 分 秒 格式及转换(转自happymagic的专栏)

    在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...

  9. SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学、字符串、日期时间)函数[转]

    SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学.字符串.日期时间)函数   --创建表格 create table aa ( UserName varchar(50 ...

随机推荐

  1. php curl 伪造IP来源的实例代码

    来源:http://www.jb51.net/article/31694.htm curl 它不但可以模仿用户登录,还可以模仿用户IP地址哦,为伪造IP来源,本实例仅供参考哦 //伪造ip ; $i ...

  2. [Auto Testing] 工具准备:Selenium 与 ChromeDriver

    <留存> Selenium http://selenium-release.storage.googleapis.com/index.html https://www.seleniumhq ...

  3. Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)

    本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...

  4. nacicat premium 快捷键

    1.ctrl+q          打开查询窗口 2.ctrl+/           注释sql语句 3.ctrl+shift +/  解除注释 4.ctrl+r          运行查询窗口的s ...

  5. 全屏背景图的实现及background的相关属性

    今天需要做一个占满设备宽度的轮播图,这里作为demo仅展示一张图,下面分别是要操作的图片(这里做了缩放处理,实际的图比较大),以及要实现的效果图,很明显两者是不成比例的:      (图一)     ...

  6. 【xsy1122】 路径 点分治+trie

    题目大意:给你一棵n个点的树,树边上有边权,对于每一个点,你要求出经过该点的所有的路径中,路径异或和最大的值. 数据范围:$n≤10^5$,边权$≤10^9$. 我们考虑枚举每一条路径,显然这个是会T ...

  7. TapTap推广统计逻辑

    当我们在Taptap上访问某款游戏时,比如https://www.taptap.com/app/34762,taptap会记录下这次访问,它是怎么做的呢. 首先,用记事本打开这个网址,在head部分看 ...

  8. [webrtc] 强制使用tcp传输

    以前笔记,整理 webrtc默认使用UDP传输,但是也可以通过TCP传输. 使用tcp传输,需要服务器中转,turnserver,licode,janus之类的服务器. 1. 如果使用turnserv ...

  9. 【java排序】冒泡排序、快速排序

    冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地 进行直到没有再需要交换,也就是说该数列已经排序完成.这 ...

  10. 最全面的 Android 编码规范指南

    最全面的 Android 编码规范指南 本文word文档下载地址:http://pan.baidu.com/s/1bXT75O 1. 前言 这份文档参考了 Google Java 编程风格规范和 Go ...