【发布时间】:2019-01-29 15:00:40
【问题描述】:
在 Laravel 中,我有一些以毫秒为单位的列。请注意,其他一些列没有毫秒数(例如created_at、updated_at)。
这是我的迁移:
Schema::create('brands', function (Blueprint $table) {
$table->increments('id');
$table->dateTime('sync_date_time', 3);
$table->timestamps();
});
我的模型很简单:
class Brand extends Model {}
当我有一个毫秒记录时(例如2018-12-19 01:40:46.512),然后执行:
$brand->sync_date_time;
它总是返回一个没有毫秒部分的字符串(例如2018-12-19 01:40:46)。
为什么会发生这种情况,我该如何解决这个问题?
请注意,这不是 Carbon 问题,因为我根本没有在该字段中使用 Carbon。
我在这里看到了一个类似的问题:
Laravel timestamps to show milliseconds
声称这实际上是一个 PDO 问题并建议使用字符串或时间戳。但这是一个相当老的答案,所以我希望有一个更好的答案。
【问题讨论】:
-
只是写@cfnerd 的答案。 format("m-d-Y H:i:s.u") 必须有效。
-
@cfnerd 首先,我什至还没有将 Carbon 引入其中。所以
format方法不可用。但即使我在casts属性中添加 dateTime,它也只会返回毫秒为 0。 -
并不是我不能用 Carbon。返回的属性是一个字符串。我什至没有将它转换为任何其他类型。所以将字符串
2018-12-19 01:40:46转换为DateTime,然后格式化就行不通了。
标签: laravel laravel-5 laravel-5.6