Yii2 GridView 按年份过滤日期

Posted

技术标签:

【中文标题】Yii2 GridView 按年份过滤日期【英文标题】:Yii2 GridView filter date by year 【发布时间】:2015-09-20 12:39:17 【问题描述】:

这个问题很简单,但是在 Yii2 中我找不到答案。

给定一个生日字段,如何在 gridview 中按年份过滤?通常在索引网格视图中。

【问题讨论】:

这就是我正在寻找的 :))) 【参考方案1】:

也许你正在寻找这样的东西:

添加到您的模型中

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);

【讨论】:

感谢@Tony,不,这没有用。不是那么简单。我需要对 activeRecord 从数据库映射的日期字段进行真正的过滤。 请您把您的问题说得更具体一些。因为回答者现在所拥有的只是关于您实际拥有什么以及您想要实现什么的假设。 我在 mysql 数据库 dateTime 字段中基于 activeRecord 的模型中有 i 日期字段(生日)。在寻找一种方法在 gridview 中仅按年份过滤行,然后仅显示特定年份出生的人。

以上是关于Yii2 GridView 按年份过滤日期的主要内容,如果未能解决你的问题,请参考以下文章

Yii2 GridView Triger仅在点击时过滤

不加载kartik 的select2 作为GridView 中的过滤器。 Yii2

YII2 Gridview 批量删除

Django - 按最大(日期)年份过滤查询集

Django按日期范围过滤但不包括年份

yii2的gridview批量删除