php - 查询使用聚合时 Laravel mongodb 返回日期格式错误
问题描述
我用aggregated
with$facet
过滤来自 jenssegers/laravel-mongodb 的原始查询的集合中的列表用户。但我收到日期的数据有格式:
{
"list": [
{
"_id": 1,
"activated": 1,
"status": 1,
"created_at": {
"$date": {
"$numberLong": "1591626995341"
}
},
"updated_at": {
"$date": {
"$numberLong": "1591627007461"
}
},
"register_at": {
"$date": {
"$numberLong": "1591627007376"
}
}
},
....
],
"option":{
"total":12,
"offset":0,
"limit":10
}
我只想获取日期格式created_at:"Y-m-d H:i:s"
PS:我可以使用$addFields
和$dateToString
如下
$aggregate = [
$matched,
['$sort' => ['_id' => 1]],
[
'$facet' => [
'list' => [
['$skip' => $offset],
['$limit' => $limit],
[
'$addFields' => [
'register_at' => [
'$dateToString' => [
'date' => '$register_at',
'format' => '%Y-%m-%d %H:%M:%S'
]
],
'created_at' => [
'$dateToString' => [
'date' => '$created_at',
'format' => '%Y-%m-%d %H:%M:%S'
]
],
'updated_at' => [
'$dateToString' => [
'date' => '$updated_at',
'format' => '%Y-%m-%d %H:%M:%S'
]
]
]
],
['$project' => ['password' => 0]]
],
'option' => [
['$count' => 'total'],
[
'$addFields' => [
'offset' => $offset,
'limit' => $limit
]
]
]
]
]
];
用于重新格式化 struct json 响应,但不是我的愿望。
解决方案
您可以在模型中使用 Eloquent Mutators、Date Casting your created_at、updated_at 和 register_at
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class YourModel extends Model
{
// some code ...
public function getCreatedAtAttribute($created_at){
return date("Y-m-d H:i:s", $created_at);
}
public function getUpdatedAtAttribute($updated_at){
return date("Y-m-d H:i:s", $updated_at);
}
public function getRegisterAtAttribute($register_at){
return date("Y-m-d H:i:s", $register_at);
}
}
推荐阅读
- html - 如何使角度组件可重用?(角度 2+)
- r - 将字符向量转换为具有字符向量名称的空列表
- python - 覆盖自定义类异常
- c# - 数据集中的多个系列
- flutter - 我们可以在 Flutter 中构建图像编辑器吗?
- python - 使用 matplotlib 从各种表创建子图
- android - 随机提问,不重复
- python - 通过串行通信自动执行登录操作
- .net-core-3.0 - 我不能在 net core 3 startap 中使用 ContractResolver
- swift - NSCocoaErrorDomain Code=257 文件无法打开,因为您无权查看它:FileManager attributesOfItem 在 iOS13 中返回 nil