所以我有两个模型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 语句,它将对视图中的不同数据进行分组,而不是将它们组合在一起以形成活动时间线。如果你能帮忙谢谢
1 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
您可以将这些集合合并在一起,并按照您希望的方式对它们进行排序/排序。我强烈建议不要将一个 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());
- 1 回答
- 0 关注
- 86 浏览
添加回答
举报
0/150
提交
取消