2015-07-02 127 views
-3

问题很简单,但在Yii2中我找不到解决方案。给定一个生日字段如何在gridview过滤器中逐年过滤。 Tipically在指数gridview的Yii2 GridView过滤器按日期排列

+0

这就是我在找:))) –

回答

5

也许您正在寻找这样的事情:

在添加到模型

public static function getYearsList() 
{ 
    $years = (new Query())->select('DISTINCT YEAR(`birthday`) as years')->from('{{%yourTable}}')->column(); 
    return array_combine($years, $years); 
} 

,然后在GridView的

[ 
    'attribute' => 'birthday', 
    'filter' => YourModel::getYearsList(), 
] 

,然后在搜索型号加andFilterWhere()比较生日同年。它可以看起来像这样:

$query->andFilterWhere('YEAR(`birthday`)' => $year); 
+0

谢谢@托尼,不,这没有用。不是那么简单。我需要通过activeRecord从数据库映射日期字段上的真实过滤器。 – scaisEdge

+0

请问您可以针对您的问题更具体一些。因为所有回答者现在都有一个关于你实际拥有什么和你想要达到什么的假设。 – Tony

+1

我有我的日期字段(生日)在基于mysql datatabase dateTime字段activeRecord模型。在寻找一种在gridview中过滤仅在一年中的行的方法,然后仅显示在特定年份出生的人。 – scaisEdge