Laravel 集合中创建的价值更改为人类可读
我试图输出一个集合,该集合是在一个JSON请求中为人类可读而创建的 以下代码起作用:Laravel 集合中创建的价值更改为人类可读,laravel,collections,php-carbon,Laravel,Collections,Php Carbon,我试图输出一个集合,该集合是在一个JSON请求中为人类可读而创建的 以下代码起作用: $childComments = $comment->getParentsChildren($comment->id , $childCount)->with('creator')->get(); return $childComments->map(function($childComments){ return [ 'created_at' =>
$childComments = $comment->getParentsChildren($comment->id , $childCount)->with('creator')->get();
return $childComments->map(function($childComments){
return [
'created_at' => $childComments->created_at->diffForHumans()
];
});
问题是只返回在处创建的,我希望返回$childComments集合的其余部分,而不必手动添加每个属性
我试过这个:
return $childComments->map(function($childComments){
$childComments->created_at = $childComments->created_at->diffForHumans();
});
然后抛出这个错误
{消息:“找不到两位数的月份↵数据丢失”,异常:“InvalidArgumentException”,…}
例外
:
“无效辩论例外”
文件
:
“/Applications/MAMP/htdocs/community/vendor/nesbot/carbon/src/carbon/carbon.php”
编辑访问者尝试:
控制器
return $childComments->each(function($childComments){
$childComments->created_at = $childComments->humanDate;
});
评论模式
public function getHumanDate()
{
return $this->created_at->diffForHumans();
}
现在,JSON输出中所有创建日期的时间戳字段都变为null。更正:Eloquent将时间戳字段转换为Carbon对象或从Carbon对象转换为时间戳字段。无法将差异解析为新的碳对象 一个简单的解决方案就是将这个字段重命名为类似于
created\u diff
的名称,这样模型就不会试图解析它
您还需要从映射闭包返回对象,否则,集合将只填充空值:
return $childComments->map(function($childComments){
$childComments->created_diff = $childComments->created_at->diffForHumans();
return $childComments;
});
或者,由于对象是可变的并通过引用传递,您也可以只使用以下每个对象:
return $childComments->each(function($childComments){
$childComments->created_diff = $childComments->created_at->diffForHumans();
});
更正:Eloquent将时间戳字段与碳对象进行转换。无法将差异解析为新的碳对象 一个简单的解决方案就是将这个字段重命名为类似于
created\u diff
的名称,这样模型就不会试图解析它
您还需要从映射闭包返回对象,否则,集合将只填充空值:
return $childComments->map(function($childComments){
$childComments->created_diff = $childComments->created_at->diffForHumans();
return $childComments;
});
或者,由于对象是可变的并通过引用传递,您也可以只使用以下每个对象:
return $childComments->each(function($childComments){
$childComments->created_diff = $childComments->created_at->diffForHumans();
});
你试过“访问器”吗@我没有,但这会影响到我使用created_时的所有地方吗?是的,我几乎在我所有的项目中都使用它来将日期转换为Jalali日期。我强烈建议使用它。我只想影响created_at的这一个实例,而不影响其他实例。我仍然可以使用访问器进行访问吗?您可以为所需的每个模型创建访问器。试试看。您只需要在模型中添加3-5行,所以请尝试。您尝试过“访问器”吗@我没有,但这会影响到我使用created_时的所有地方吗?是的,我几乎在我所有的项目中都使用它来将日期转换为Jalali日期。我强烈建议使用它。我只想影响created_at的这一个实例,而不影响其他实例。我仍然可以使用访问器进行访问吗?您可以为所需的每个模型创建访问器。试试看。您只需要在模型中添加3-5行,因此请尝试。