我是 Laravel Lumen 框架的新手。我使用的是 Laravel Lumen 5.4.7,我的 PHP 版本是 7.0。我在使用 Laravel Lumen web api 在数据库中保存时区时遇到了这个问题。我已经在 .环境文件
APP_TIMEZONE=Asia/karachi
Run Code Online (Sandbox Code Playgroud)
当我只回显这段代码时
date('Y-m-d H:i:s')
Run Code Online (Sandbox Code Playgroud)
或这个
\Carbon\Carbon::now()
Run Code Online (Sandbox Code Playgroud)
两行代码都返回我当前的本地时间,但是当我将此时区保存在数据库中的“created_at”和“updated_at”字段时。它保存了错误的时区。为什么会发生这种情况?我正在使用这行代码来保存数据数据库
$order_data=array(
'amount'=>35,
'updated_at' =>\Carbon\Carbon::now(),
'created_at' =>\Carbon\Carbon::now()
);
DB::table('orders')->insertGetId($order_data);
Run Code Online (Sandbox Code Playgroud)
我也试过这行代码来保存数据
DB::table('orders')->insert($order_data);
Run Code Online (Sandbox Code Playgroud)
但是在created_at和updated_at字段中的数据库中仍然有错误的时区。然后我还更新了我的代码以使用Elequont,为此我创建了一个名为“Order”的模型但在数据库中仍然有错误的时区。我的Elequont代码如下.
$order_data=array(
'amount'=>35,
'updated_at' =>\Carbon\Carbon::now(),
'created_at' =>\Carbon\Carbon::now()
);
Order::create($order_data);
Run Code Online (Sandbox Code Playgroud)
我已经尝试了太多来消除这个问题。但还没有得到任何运气。谁能帮助我为什么 Lumen 没有在数据库中保存当前时区?
尝试添加'timezone' => env('APP_TIMEZONE', "UTC")到您的config/app.php并在此php artisan cache:clear之后运行。
也尝试添加DB_TIMEZONE=+05:00到您的.env文件(当然调整到您的 UTC 偏移量)