Laravel Nova:模型时区中的日期时间

Dre*_*rts 6 laravel laravel-nova

我希望 Laravel Nova 在基于模型的自定义时区中处理 DateTime 字段(以 UTC 形式存储在数据库中),而不是默认情况下在用户时区中处理:

https://nova.laravel.com/docs/3.0/resources/date-fields.html#timezones

该字段用于显示美国各地时区不同地点的活动开始时间。在用户的时区中显示它们是没有意义的,因为它们将使用位置过滤器进行排序或根据位置模型进行查看。

有人有如何处理这个用例的解决方案吗?

Ank*_*t.Z 2

请尝试此操作,在用户表中创建名为时区的新列。

Schema::table('users', function (Blueprint $table) {
        $table->string('timezone')->nullable();
    });
Run Code Online (Sandbox Code Playgroud)

在用户资源中创建时区字段,如下所示

Timezone::make('Timezone')
                ->default('yourtimezone'),
Run Code Online (Sandbox Code Playgroud)

然后在 novaServiceProvider 的 boot() 中添加以下内容

Nova::userTimezone(function (Request $request) {
        return $request->user()->timezone;
    });
Run Code Online (Sandbox Code Playgroud)

这使您可以控制用户时区。用户使用特定时区登录后,他/她将能够在跨时区的不同位置创建事件。