yii2 GridView 日期格式化並實現日期可搜索 案例

做者:白狼 出處:http://www.manks.top/article/yii2_gridview_dateformat_search數據庫

本文版權歸做者,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。yii2

日期格式化,咱們先來看看效果圖yii

這個咱們分狀況討論ide

一、若是你的數據庫字段created_at存的時間格式是date或者datetime,那很簡單,gridview中直接輸出該字段created_at便可,如上圖中右側所示this

二、若是數據庫存入的時間戳類型,如上圖中左側所示,則須要像下面這樣進行輸出orm

[
    'attribute' => 'created_at',
    'value' => function ($model) {
        return date('Y-m-d H:i:s', $model->created_at);
    },
],
[
    'attribute' => 'created_at',
    'format' => ['date', 'Y-m-d H:i:s'],
],

以上展現了兩種方式進行格式輸出,均可以。可是,若是想要實現搜索的機制,若是你的數據庫存入的是datetime型,很方便,dataProvider不用作修改,blog

代碼以下get

$query->andFilterWhere([
    // ......
    'created_at' => $this->created_at,
    // ......
]);

若是你的數據庫存入的是時間戳,io

第一步,修改對應規則以下圖所示function

第二步,修改dataProvider可參考以下代碼

//咱們搜索輸入框中輸入的格式通常是 2016-01-01 而非時間戳
//輸出2016-01-01無非是想搜索這一天的數據,所以代碼以下
if ($this->created_at) {
    $createdAt = strtotime($this->created_at);
    $createdAtEnd = $createdAt + 24*3600;
    $query->andWhere("created_at >= {$createdAt} AND created_at <= {$createdAtEnd}");
}

這裏作個小總結,建議使用datetime類型,我的以爲存時間戳甚是麻煩,若是你有好的建議,下方留言咱們共同交流。

相關文章
相關標籤/搜索