返回 laravel 中日期时间格式字段的 unix-timestamp 格式
Posted
技术标签:
【中文标题】返回 laravel 中日期时间格式字段的 unix-timestamp 格式【英文标题】:return unix-timestamp format for datetime formatted field in laravel 【发布时间】:2017-09-19 09:37:09 【问题描述】:我有一个像这样的Message
模型:
class Message extends Model
protected $primaryKey = 'message_id';
protected $dates = ['created_at', 'updated_at', 'receiver_deleted_at', 'sender_deleted_at', 'sender_read_at', 'receiver_read_at'];
如您所见,有些日期字段以 DATETIME(YYYY-MM-DD HH:MM:SS) 格式保存日期。
但我希望在获取模型实例时所有日期字段都转换为 unix-timestamp 格式然后返回。
我知道每个字段都可以使用这样的访问器:
public function getCreatedAtAttribute()
dd(strtotime($this->attributes['created_at']));
return strtotime($this->attributes['created_at']);
但在这种情况下,我必须为每个字段定义一个类似上面的函数。
但我想要一种更简单的方法来强制模型以 unix-timestamp 格式返回日期字段。
【问题讨论】:
访问器负责转换为默认 DateTime 扩展的 Carbon 实例。所以,$this->created_at->format('U');
应该可以工作。
@TomLank.,我想在调用模型转换格式的实例时返回
【参考方案1】:
protected $casts = [
'created_at' => 'timestamp',
'updated_at' => 'timestamp'
];
在模型中只需添加这些转换即可获得 unix 时间戳
【讨论】:
【参考方案2】:你可以覆盖:
protected function getDateFormat()
return 'U';
或
对每一列使用时间戳属性:
$model->created_at->timestamp
参考:https://laravel.com/docs/4.2/eloquent#timestamps
【讨论】:
我添加了getDateFormat
函数但得到了这个错误:Trailing data
以上是关于返回 laravel 中日期时间格式字段的 unix-timestamp 格式的主要内容,如果未能解决你的问题,请参考以下文章