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

WBOY
풀어 주다: 2016-06-23 14:13:06
원래의
845명이 탐색했습니다.

Yii PHP 日期过滤

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,));	}
로그인 후 복사


回复讨论(解决方案)

提交之后又没把获取的日期值赋值给模型,那在search方法中怎么会过滤

怎么复制给模型

可以用另外一种解决方案,自己新建一个dataprovinder 然后sql语句查询时间之间的记录

$model->startTime=$_POST['starttime'];    //传值给模型$model->endTime=$_POST['endtime'];  
로그인 후 복사


谢谢楼上两位,都搞定了,两种方法都是可行的,不过第二种比较慢
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿