我正在从数据库中获取数据并将其存储在$groups
上。它有不同的created_at
对于每个条目。
我想覆盖created_at
集合中的字段,就在将其返回到 View 之前,并且有很好的 ->diffForHumans()
版本。
$groupsArray = $messages;
foreach($groupsArray as $key => $group) {
var_dump($groupsArray[$key]['created_at']); // works: 2015-10-17 21:55:46.000000'
var_dump($groupsArray[$key]['created_at']->diffForHumans()); // Error: A two digit month could not be found Data missing
$groupsArray[$key]['created_at'] = $groupsArray[$key]['created_at']->diffForHumans(); // Not Working
}
return $groupsArray->toJson();
如果我改变groupsArray = $messages->toArray();
,上述 block 的“//错误”位更改为 Call to a member function diffForHumans() on string
.
最终,我需要将其作为 json 返回,因为它是 ajax 请求。我想覆盖 created_at
,所以我可以使用group[i]['created_at']
在 View 中的 javascript 部分中,返回并获取 Carbon 版本后。
最佳答案
首先,确保“created_at”位于模型的 $dates 数组中。 就像 http://laravel.com/docs/5.1/eloquent-mutators#date-mutators 上描述的那样 其次,您可以通过执行以下操作来迭代和更新集合:
$messages->transform(function ($item, $key) {
$item->difference = $item->created_at->diffForHumans(); // 10 hrs ago
return $item;
});
$messages->toJson();
关于javascript - 覆盖集合中的原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194717/