laravel/lumen dateformat 'U' 是如何工作的?
How does laravel/lumen dateformat 'U' actually works?
我无法在 lumen 中使用日期格式 'U' 获取时间戳。
迁移中:
$table->timestamps();
模型中:
protected $dateFormat = 'U';
protected $dates = [
'created_at',
'updated_at',
'deleted_at'
];
public function getDateFormat()
{
return 'U';
}
从控制器插入行:
$model = new ApiKey;
$model->random= rand();
$model->name = $name;
$model->scope = $scope;
$model->save();
它确实在数据库中插入了行,但是 0000-00-00 00:00:00 值用于 created_at 和 updated_at 列。
此外,在通过 toArray 或 toJson 检索模型时抛出异常:
我希望 lumen 自动更新时间戳并将时间戳检索为 unixtimestamp 格式,即从 1970 年 1 月 1 日开始的秒数。
另外,$table->timestamps()
没有创建 deleted_at 列。我需要做什么才能通过 laravel.
创建此列
除了$table->timestamp('deleted_at');
还有其他选择吗?
我找到了一个解决方案,可以将时间戳列更改为 int。但我希望事情以 laravel 的方式完成。
Unix 时间戳是整数,与 SQL datetime/timestamp 字段不兼容。如果要使用unix时间戳,使用整型字段类型存储。
timestamps()方法只创建created_at和updated_at,默认不启用软删除。如果要存储整数,则不应使用此方法。
如果您只想在序列化数据时更改输出格式,请使用转换:
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'created_at' => 'datetime:U',
];
这可能是由于 Laravel/Lumen 创建的 date/time 列类型为 timestamp
而不是 int
所以你试图保存错误的类型字段中的数据,导致 0000-00-00 00:00:00
.
这也会导致碳排放问题,因为您正尝试 createFromFormat
与内容相比使用错误的格式。
您可以在迁移中使用 $table->integer('deleted_at');
创建一个 deleted_at
列。
长话短说:
使用 $table->integer('updated_at')
手动创建日期时间列。
<?php
namespace App\Traits;
use Illuminate\Support\Carbon;
trait sqlServerDateFormat
{
public function fromDateTime($value)
{
return Carbon::parse(parent::fromDateTime($value))->format('d-m-Y H:i:s');
}
}
我无法在 lumen 中使用日期格式 'U' 获取时间戳。
迁移中:
$table->timestamps();
模型中:
protected $dateFormat = 'U';
protected $dates = [
'created_at',
'updated_at',
'deleted_at'
];
public function getDateFormat()
{
return 'U';
}
从控制器插入行:
$model = new ApiKey;
$model->random= rand();
$model->name = $name;
$model->scope = $scope;
$model->save();
它确实在数据库中插入了行,但是 0000-00-00 00:00:00 值用于 created_at 和 updated_at 列。
此外,在通过 toArray 或 toJson 检索模型时抛出异常:
我希望 lumen 自动更新时间戳并将时间戳检索为 unixtimestamp 格式,即从 1970 年 1 月 1 日开始的秒数。
另外,$table->timestamps()
没有创建 deleted_at 列。我需要做什么才能通过 laravel.
除了$table->timestamp('deleted_at');
还有其他选择吗?
我找到了一个解决方案,可以将时间戳列更改为 int。但我希望事情以 laravel 的方式完成。
Unix 时间戳是整数,与 SQL datetime/timestamp 字段不兼容。如果要使用unix时间戳,使用整型字段类型存储。
timestamps()方法只创建created_at和updated_at,默认不启用软删除。如果要存储整数,则不应使用此方法。
如果您只想在序列化数据时更改输出格式,请使用转换:
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'created_at' => 'datetime:U',
];
这可能是由于 Laravel/Lumen 创建的 date/time 列类型为 timestamp
而不是 int
所以你试图保存错误的类型字段中的数据,导致 0000-00-00 00:00:00
.
这也会导致碳排放问题,因为您正尝试 createFromFormat
与内容相比使用错误的格式。
您可以在迁移中使用 $table->integer('deleted_at');
创建一个 deleted_at
列。
长话短说:
使用 $table->integer('updated_at')
手动创建日期时间列。
<?php
namespace App\Traits;
use Illuminate\Support\Carbon;
trait sqlServerDateFormat
{
public function fromDateTime($value)
{
return Carbon::parse(parent::fromDateTime($value))->format('d-m-Y H:i:s');
}
}