提问者:小点点

根据视图的描述顺序合并模型-创建activity页面


所以我有两个模型likefolloy模型,我想创建一个activity页面,用户可以相应地看到他最新的activity。 我考虑使用Laravel的merge函数在视图中合并这两个模型,但我不知道如何指示用户是否喜欢该帖子或关注博客。

$like= Like::where('user_id', '=', auth()->user()->id)->orderBy('created_at','desc')->get();
$follow = Follow::where('user_id', '=', auth()->user()->id)->orderBy('created_at','desc')->get();
$all = $like->merge($follow);

如果我在视图中使用If语句,它将对视图中的不同数据进行分组,而不是将它们组合在一起形成activity时间线。

如果你能帮忙,谢谢


共1个答案

匿名用户

您可以将这些集合合并在一起,并按您的意愿对它们进行排序。 我强烈建议不要将一个雄辩的集合合并到另一个不同类型的雄辩集合中。 与基集合类型(luminate\support\Collection)不同,从它扩展的雄辩集合(luminate\database\Eloquent\Collection)考虑了模型的键。 因此,如果您有两个集合,并且任何模型中有相同的键,它们将被覆盖。 您希望将其中一个集合转换为基集合,然后在另一个集合中合并:

$merged = $like->toBase()->merge($follow);

$sorted = $merged->sortByDesc('created_at');

或者甚至将它们转换为基集合并合并:

$merged = $like->toBase()->merge($follow->toBase());