再一次的用到了时间区间查询,跟上次仍然不一样。
这次是在_search的activeForm 中使用
首先 composer下载安装小部件
composer require "kartik-v/yii2-date-range": "*"
这里安装时如果提示“:”有问题,可以直接composer require "kartik-v/yii2-date-range"
引入:use kartik\daterange\DateRangePicker;
form里面使用
<?= $form->field($model,'ctime')->widget(DateRangePicker::className(),[
'autoUpdateOnInit'=>false,
'convertFormat' => true,
'language' => 'zh-CN',
'startAttribute' => 'stime',
'endAttribute' => 'etime',
'presetDropdown' => true,
'pluginOptions' => [
'stime'=>$stime,
'etime'=>$etime,
'timePickerIncrement' => 30,
'maxDate' => date('Y-m-d', time()),
'locale' => [
'applyLabel' => '确认',
'cancelLabel' => '取消',
'format' => 'Y-m-d'
]
],
'options' => [
'value'=>$ctime,
'style'=>'width:250px',
],
]);?>
‘startAttribute’ => ‘stime’,
‘endAttribute’ => ‘etime’,
这里的stime和etime需要在searchModel中声明一下
public $stime;
public
e
t
i
m
e
;
然
后
是
区
间
查
询
i
f
(
etime; 然后是区间查询 if(
etime;然后是区间查询if(this->stime){
s
t
i
m
e
=
s
t
r
t
o
t
i
m
e
(
stime = strtotime(
stime=strtotime(this->stime.‘00:00:00’);
e
t
i
m
e
=
s
t
r
t
o
t
i
m
e
(
etime = strtotime(
etime=strtotime(this->etime.‘23:59:59’);
$query->andFilterWhere([‘between’, ‘ctime’, $stime, $etime]);
}
到这里就可以查询出时间段里的数据了,但是查询完之后,查询选择的时间提交没有显示出来。
需要在控制器index方法中将查询的数据渲染
这样就可以了,效果如下
参考:https://www.yiichina.com/tutorial/1108