根据视图的降序合并模型 - 创建一个活动页面

所以我有两个模型like和follow模型,我想创建一个活动页面,用户可以在其中相应地看到他的最新活动。我考虑过使用 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 语句,它将对视图中的不同数据进行分组,而不是将它们组合在一起以形成活动时间线。


如果你能帮忙谢谢


冉冉说
浏览 61回答 1
1回答

茅侃侃

您可以将这些集合合并在一起,并按照您希望的方式对它们进行排序/排序。我强烈建议不要将一个 Eloquent Collection 合并到另一个不同类型的 Eloquent Collection 中。与基础集合类型 ( Illuminate\Support\Collection) 不同,Eloquent 集合 ( Illuminate\Database\Eloquent\Collection) 从它扩展而来,它考虑了模型的键。因此,如果您有 2 个集合,并且任何模型都具有相同的密钥,它们将被覆盖。您想要将这些集合之一转换为基本集合,然后合并到另一个集合中:$merged = $like->toBase()->merge($follow); $sorted = $merged->sortByDesc('created_at');或者甚至将它们都转换为基本集合并合并:$merged = $like->toBase()->merge($follow->toBase());
打开App,查看更多内容
随时随地看视频慕课网APP