我正在使用带有'presetDropdown'选项的Kartiks DateRangePicker . 这提供了一些默认值来搜索,今天,昨天,最近7天等 .
生成选择器的代码:
echo DateRangePicker::widget([
'model'=>$model,
'attribute' => 'created_at',
'useWithAddon'=>true,
'convertFormat'=>true,
'presetDropdown'=>true,
'hideInput'=>true,
'startAttribute' => 'start',
'endAttribute' => 'end',
'pluginOptions'=>[
'locale'=>['format' => 'Y-m-d'],
]
]);
SearchItem类:
$this->start = strtotime($this->start);
$this->end = strtotime($this->end);
$query->andFilterWhere(['>=', 'created_at', $this->start])
->andFilterWhere(['<', 'created_at', $this->end]);
我遇到的问题是当使用 today
或 yesterday
选项时,它会产生以下查询:
SELECT * FROM `item` WHERE (`created_at` >= 1534896000) AND (`created_at` < 1534896000)
所以它正在查询上午12点创建的项目 . 有没有人有任何想法可能是什么,非常确定它不是默认行为所以必须是我做错了 .
2 回答
我的错...
通过编辑格式选项解决:
产生一个更丑陋的输入字段,但有一种方法可以隐藏:
或者,您可以使用第一个版本来获得正确的结束时间戳:
使用上面的命令,您将获得第二天开始的时间戳(例如14/11 00:00:00),并从中减去一秒,以获得所需的时间戳(在同一示例中为13/11) 23:59:59) .