我现在的问题是每当我创建两个新分配时,合并集合中的最后一个Post
就会消失。
// Here is the code:
@foreach($user->groups as $group)
<?php
$all = $group->posts->merge($group->assignments)->merge($group->quizzes);
$sorted = $all->sortByDesc('created_at');
?>
@foreach($sorted as $item)
<?php
$val = get_class($item);
switch ($val)
{
case 'App\Post':
?>
Post:{{$item->body}}<br>
<?php
break;
case 'App\Assignment':
?>
Assignment:{{$item->title}}<br>
<?php
break;
case 'App\Quiz':
?>
Quiz:{{$item->body}}<br>
<?php
break;
}
?>
@endforeach
@endforeach
那么我怎样才能将各种Eloquent Collections合并在一起,然后按最新的排序呢?
答案 0 :(得分:0)
合并Eloquent系列,模型&#39;主键用于标识重复项。因此,分配将覆盖具有相同ID的帖子,然后quizes将覆盖具有相同ID的帖子和作业。
为了达到你想要的效果,你需要使用 values()方法将Eloquent集合转换为由整数索引的常规集合。
替换:
$all = $group->posts->merge($group->assignments)->merge($group->quizzes);
与
$all = $group->posts->values()->merge($group->assignments->values())->merge($group->quizzes->values());