我有一个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格式返回。
答案 0 :(得分:1)
您可以覆盖:
$model->created_at->timestamp
OR
为每列使用timestamp属性:
{{1}}
答案 1 :(得分:1)
protected $casts = [
'created_at' => 'timestamp',
'updated_at' => 'timestamp'
];
在模型中,只需添加这些演员表以获得unix时间戳
答案 2 :(得分:0)
您可以覆盖模型中的asDateTime()
方法:
protected function asDateTime($value)
{
return Carbon::parse($value)->timestamp;
}
它就像你为$dates
数组中的每个日期创建一个访问者一样(包括created_at
和updated_at
)。