Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将不正确的存储日期时间保存到JPB和队列上的数据库中_Php_Laravel_Laravel 5.6 - Fatal编程技术网

Php 将不正确的存储日期时间保存到JPB和队列上的数据库中

Php 将不正确的存储日期时间保存到JPB和队列上的数据库中,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,仅仅在将数据创建到数据库中之后,我就发现错误的数据时间是在处创建的,而在处更新为phpMyAdmin 我在laravelconfig/app文件中设置了Asia/tehran,并且我的系统日期时间正确且更新,当我使用carbon记录now()时,我得到以下输出: Carbon @1532117471 {#1179 ▼ date: 2018-07-21 00:41:11.142496 Asia/Tehran (+04:30) } 这对于我的系统datetime是正确的,在数据库datetim

仅仅在将数据创建到数据库中之后,我就发现错误的数据时间是
处创建的,而
处更新为
phpMyAdmin

我在laravel
config/app
文件中设置了
Asia/tehran
,并且我的系统日期时间正确且更新,当我使用
carbon
记录
now()
时,我得到以下输出:

Carbon @1532117471 {#1179 ▼
  date: 2018-07-21 00:41:11.142496 Asia/Tehran (+04:30)
}
这对于我的系统datetime是正确的,在数据库datetime上创建的
和更新的
是:
2018-07-20 19:58:26

使用LARAVEL作业队列时会出现此问题


此时的时钟是
00:41:11
而不是
19:58:26
,我如何解决此问题并解决此问题?

您正在查看laravel的创建和更新。它们被用作基于larave的
config/app
时区创建的时间戳。 你怎么能改变这个

备选案文1。转到
config/app.php
并将时区更改为所需的时区

备选案文2。使用变量管理在处创建的模型

在您雄辩的模型上,您只需创建:

public function setCreatedAtAttribute($value) {
  /*
  $value is the value it is going to initially be stored
  This date format is required due to mySql's timestamp restriction.
  However, you can create a date with Carbon, and as long as you format into that 
  structure Y-d-m H:i:s it will do just fine
  */
  $this->attributes['created_at'] = Date("Y-m-d H:i:s);
}
注意:为了触发此函数,需要使用Eloquent的Create,如中所示:

$data = ['some_field' => 'hi',
         'some_ther_field' => 'hiSomeOtherField'];
SomeModel::create($data);

事实上,数据库中的日期时间指向0 GMT是正确的。这样做是为了灵活性,当您从db获得数据时,eloquent将根据您的时区调整该时间。尝试使用orm(雄辩)从数据库中获取数据,并转储记录,您将看到时间适应了应用程序的要求timezone@num8er你认为我错了,我用雄辩的工具获得了错误的日期时间。Avel将
created_在
updated_在
列创建为
时间戳
字段,而不是日期时间。根据MySql,时间戳以UTC格式存储在数据库中@JPark这个问题发生在我使用laravel作业队列时。嗯,我不明白laravel为什么在运行队列时不使用配置,除非有什么东西在某处覆盖了时区值。如果最近更改了
app.php
中的设置,可以尝试清除缓存
php artisan config:clear
并重新启动队列
php artisan queue:restart
,以查看是否有帮助。