Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.5k views
in Technique[技术] by (71.8m points)

Yii2 GridView filter date by year

This question is simple, but in Yii2 I cannot find the solution.

Given a birthday field, how is it possible in gridview to filter by year? Typically in an index gridview.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Maybe you are looking for something like this:

add in to your model

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

and then in gridview

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

And then in your search model add andFilterWhere() to compare birthday with year. It can look like this:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...