我想在特定位置的laravel集合中添加一个新对象,有人可以帮助我实现这一目标吗?
例如:
“data”: [
{
“provider”: ‘datechanged’,
“unogsdate”: “2019-01-25",
“download”: 3
}
{
“id”: 54946,
“provider”: “netflix”,
“netflixid”: 80171173,
“unogsdate”: “2019-01-25”,
}{
“id”: 54946,
“provider”: “netflix”,
“netflixid”: 80171173,
“unogsdate”: “2019-01-25”,
}{
“id”: 54946,
“provider”: “netflix”,
“netflixid”: 80171173,
“unogsdate”: “2019-01-25”,
}
{
“provider”: ‘datechanged’,
“unogsdate”: “2019-01-27",
“download”: 5
}
{
“id”: 54946,
“provider”: “netflix”,
“netflixid”: 80171173,
“unogsdate”: “2019-01-27”,
}{
“id”: 54946,
“provider”: “netflix”,
“netflixid”: 80171173,
“unogsdate”: “2019-01-27”,
}{
“id”: 54946,
“provider”: “netflix”,
“netflixid”: 80171173,
“unogsdate”: “2019-01-27”,
}{
“id”: 54946,
“provider”: “netflix”,
“netflixid”: 80171173,
“unogsdate”: “2019-01-27”,
}{
“id”: 54946,
“provider”: “netflix”,
“netflixid”: 80171173,
“unogsdate”: “2019-01-27”,
}
我想基于记录在新日期的开始之前恰好添加新记录,例如就在日期unogsdate:2019-01-25开始之前,我想添加一个新记录, { “ provider”:“ datechanged”, “ unogsdate”:“ 2019-01-25”, “下载”:3 } 如下例所示。...非常感谢任何帮助。
答案 0 :(得分:2)
您可以完全使用Laravel Collections中可用的方法来完成此操作。
这就是我要做的:
unogsdate
。each()
遍历集合prepend()
包含我需要的数据的子集合。flatten()
收藏。这是一个例子:
$collection = collect([
(object) [
'id' => 54946,
'provider' => 'netflix',
'netflixid' => 80171173,
'unogsdate' => '2019-01-25'
],
(object) [
'id' => 54946,
'provider' => 'netflix',
'netflixid' => 80171173,
'unogsdate' => '2019-01-25'
],
(object) [
'id' => 54946,
'provider' => 'netflix',
'netflixid' => 80171173,
'unogsdate' => '2019-01-25'
],
(object) [
'id' => 54946,
'provider' => 'netflix',
'netflixid' => 80171173,
'unogsdate' => '2019-01-27'
],
(object) [
'id' => 54946,
'provider' => 'netflix',
'netflixid' => 80171173,
'unogsdate' => '2019-01-27'
]
]);
return $collection->groupBy('unogsdate')
->each(function($value, $key) {
return $value->prepend(
(object) [
'provider' => 'datechanged',
'unogsdate' => $key,
'downloads' => $value->count()
]
);
})
->flatten();
当然,我不知道您如何获取实际数据。但是,上面的集合类似于您当前的数据集。您可以轻松地将其重新应用到您的收藏夹。
另外,您可以在这里玩working example:)