Yii2:如何过滤日期'并且通过' time'来自日期时间' db列

时间:2016-06-03 04:19:35

标签: mysql sql gridview filter yii2

在用户表格中,我有一个created_at列。在成为属性的用户AR模型中,在\yii\grid\GridView中,我将该属性拆分为'columns' => ['created_at:date', 'created_at:time'],

问题:如何为相应的列提供搜索字段,我的意思是它们不是实际的db列,因此不是模型属性。所以我无法做到

$query->andFilterWhere([
            'crated_at_date' => $this->crated_at_date,
            'created_at_time' => $this->created_at_time,
        ]);

我知道搜索字段与\yii\grid\Column::filterOptions相关,但更具体地说,我不知道如何在搜索模型中指定andFilterWhere()子句。

2 个答案:

答案 0 :(得分:0)

searchModel()中,您可以尝试这种方式:

$query->andFilterWhere([
    'like', 
    'FROM_UNIXTIME(created_at, "%Y-%m-%d")', 
    $this->crated_at_date
])
->andFilterWhere([
    'like', 
    'FROM_UNIXTIME(created_at, "%h:%i:%s %p")', 
    $this->created_at_time
])

嗯,它没有经过测试,但我想它会起作用。

FROM_UNIXTIME()

答案 1 :(得分:0)

您可以通过将输入数据时间转换为时间来过滤或多或少:

order = ['foo', 'bar']
data = [{'name': 'bar', 'someData': 'someValue'}, {'name': 'foo', 'someData': 'someValue'}]