divineomega/dates-timezone-conversion-trait

自动将 Eloquent 模型的日期转换为当前用户的时区,反之亦然

v1.1.0 2019-04-11 07:35 UTC

This package is auto-updated.

Last update: 2024-09-11 19:30:48 UTC


README

此包提供了一种特性,可自动将 Eloquent 模型的日期转换为当前用户的时区,反之亦然。

安装

使用 Composer 可以轻松安装日期时区转换特性。只需从您项目的根目录运行以下命令。

composer require divineomega/dates-timezone-conversion-trait

如果您之前从未使用过 Composer 依赖管理器,请访问 Composer 网站 了解如何开始。

用法

首先,您必须将一个 timezone 字段添加到您应用程序的主要 User 模型中,并填充适当的时区。请参阅此 支持的时区列表

然后,要利用此特性,只需在任意 Eloquent 模型中使用它。以下是一个使用特性的 User 模型示例。

<?php

namespace App\Models;

use DivineOmega\DatesTimezoneConversion\Traits\DatesTimezoneConversion;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable, DatesTimezoneConversion;

    protected $dates = [
        'last_logged_in_at',
        'created_at',
        'updated_at'
    ];

    /* snipped */
}

使用特性后,以下转换将自动应用于模型中定义的任何 $dates 数组属性,如果当前有用户登录。

  • 当读取属性时(例如 $user->last_logged_in_at),日期时间对象将自动转换为用户的时区。

  • 当写入属性时(例如 $user->last_logged_in_at),日期时间将自动转换为 Laravel 应用程序的时区(如 config/app.php 文件中定义)。