YII 按照日期过滤不起作用,怎么回事?

sincor 2013-06-14 01:54:38
YII 按照日期过滤不起作用,怎么回事?

模型


<?php

/**
* This is the model class for table "user".
*
* The followings are the available columns in table 'user':
* @property integer $id
* @property string $uname
*/
class Timefliter extends CActiveRecord
{
/**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return User the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}

/**
* @return string the associated database table name
*/
public function tableName()
{
return 't_time';
}


public $starttime;
public $endtime;


/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('id', 'safe'),
//array('id', 'numerical', 'integerOnly'=>true),
array('time', 'safe'),


// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('id, time', 'safe', 'on'=>'search'),
);
}

/**
* @return array relational rules.
*/
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
);
}

/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'id'=> '编号',
'time'=> '时间',
);
}

/**
* Retrieves a list of models based on the current search/filter conditions.
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
*/
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.

$criteria=new CDbCriteria;

$criteria->compare('id',$this->id);
$criteria->compare('time','>='.$this->starttime);
$criteria->compare('time','<='.$this->endtime);

//是否开启模糊搜索,在后面true中实现
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
//'pagination'=>array('pagesize'=>$pagesize?pagesize:$page),
//'pagination'=>array('pagesize'=>$page),
));
}
}




视图

<form method="post" >

<!--时间查询-->

开始时间
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
'language'=>'zh_cn',
'name'=>'starttime',
'value'=>$query['start'] ? $query['start'] : Date('Y-m-d'),
'options'=>array(
'showAnim'=>'fold',
'showOn'=>'both',
'buttonImage'=>Yii::app()->request->baseUrl.'/images/calendar.gif',
//'maxDate'=>'new Date()',
'buttonImageOnly'=>true,
'dateFormat'=>'yy-mm-dd',
),
'htmlOptions'=>array(
'style'=>'height:18px',
'maxlength'=>8,
),
));
//echo $value;exit;
//http://blog.csdn.net/dreamzml/article/details/8227646
?>
结束时间
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
'language'=>'zh_cn',
'name'=>'endtime',
'value'=>$query['end'] ? $query['end'] : Date('Y-m-d'),
'options'=>array(
'showAnim'=>'fold',
'showOn'=>'both',
'buttonImage'=>Yii::app()->request->baseUrl.'/images/calendar.gif',
//'maxDate'=>'new Date()',
'buttonImageOnly'=>true,
'dateFormat'=>'yy-mm-dd',
),
'htmlOptions'=>array(
'style'=>'height:18px',
'maxlength'=>8,
),
));
?>
<!--
$criteria->compare('create_time','<='.$this->endtime),//创建早间小于等于指定时间

这个名字name就是widget里面的name的数据库字段,将它放到搜索页面中指定前端名字,和后端数据库的字段在模型module里面指定compare的条件即可实现时间搜索
-->




<input type="submit" name="search" value="搜索"/>
</form>




控制器



public function actionTimefliter()
{
$model=new Timefliter();
$this->render('timefliter',array('model'=>$model,));
}
...全文
235 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sincor 2013-06-14
  • 打赏
  • 举报
回复

$model->startTime=$_POST['starttime'];    //传值给模型
$model->endTime=$_POST['endtime'];  
谢谢楼上两位,都搞定了,两种方法都是可行的,不过第二种比较慢
sincoe 2013-06-14
  • 打赏
  • 举报
回复
可以用另外一种解决方案,自己新建一个dataprovinder 然后sql语句查询时间之间的记录
sincor 2013-06-14
  • 打赏
  • 举报
回复
怎么复制给模型
jckings2007 2013-06-14
  • 打赏
  • 举报
回复
提交之后又没把获取的日期值赋值给模型,那在search方法中怎么会过滤

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧