如何将两个不同的对象合并为一个?我想在时间轴上显示2个表,我需要按创建日期对它们进行分组。如果我尝试只显示一个表它可以正常工作,但我想按日期将它们组合起来。因此,如果在不同的表中存在两行具有相同的创建日期,我希望它们按该日期分组。
$comments = array_slice(WPComment::with('recipe')->orderBy('comment_date',
'desc')->get()->groupBy('comment_date')->toArray(), 0, 5);
$favorites = array_slice(WPFavorite::with('user')->orderBy('date_time',
'desc')->get()->groupBy('date_time')->toArray(), 0, 5);
我已尝试使用$object1->merge($object2)
,但由于有一些重写已完成,所以我们并没有完全合并元素。使用array_merge()
合并数组的做法基本相同。是否有一些单线解决方案,而不需要写一些讨厌的原始或双重循环乱码?
修改:
之前的JSON示例
obj1:{
id: 1
title:'blah',
date: 1.1.2001
}
obj1:{
id: 2
title:'blah blah',
date: 31.4.2301
}
obj2:{
id: 1
notTitle:'blah',
somethingSomething : 'something'
date: 31.4.2301
}
之后的JSON示例:
1.1.2001:{
obj1:{
id: 1
title:'blah',
date: 1.1.2001
}
}
31.4.2301:{
obj1:{
id: 2
title:'blah blah',
date: 31.4.2301
}
obj2:{
id: 1
notTitle:'blah',
somethingSomething : 'something'
date: 31.4.2301
}
}
答案 0 :(得分:0)
我设法用array_merge_recursive()
方法解决了我的问题。
现在完整的解决方案:
$comments = array_slice(WPComment::with('recipe')->orderBy('comment_date',
'desc')->get()->groupBy('comment_date')->toArray(), 0, 5);
$favorites = array_slice(WPFavorite::with('user')->orderBy('date_time',
'desc')->get()->groupBy('date_time')->toArray(), 0, 5);
return array_merge_recursive($comments, $favorites);