2015-07-02 162 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