gpt4 book ai didi

php - 基于两个不同因素在数据库中获取最新输入的算法

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:43 24 4
gpt4 key购买 nike

我有一个基于 laravel 的网站。网站由用户组成,用户可以相互关注。 用户 可以制作Shoutouts(如推文),并且相互关注的用户应该能够看到这些。我的数据库中有一个 User 表、一个 Shoutout 表和一个 Follow 表。

因为它是在 Laravel 中制作的,用户与 Shoutout 和 Follow 表都有 hasMany 关系。

因此,当用户登录时,我想获取该用户关注的所有人。我通过以下方式做到这一点:

$following = Follow::whereUser_id($user->id)->get();

但是,我现在如何从 $following 中的用户那里获取 Shoutouts,按照创建 shoutout 的时间降序排列,这样我就可以做一个foreach($shoutouts as $shoutout) 在我看来?这个想法是用户可以看到用户关注的人的最新 Shoutouts。

如果我做了类似的事情:

$following = Follow::whereUser_id($user->id)->get();

foreach($following as $follow) {
$shoutouts = $shoutouts . Shoutout::whereUser_id($follow->user_id)->get();
}

我会按错误的顺序获取它们,因为这会依次给我特定用户的所有留言,但我想按降序排列,以便用户首先看到最新的留言。

感谢所有帮助。

最佳答案

您可以使用 join 进行尝试作为:

假设您的 Follow 表中有一个 followed_user_id

$shoutouts = Shoutout::join('follow', 'shoutout.user_id', '=', 'follow.followed_user_id')
->where('follow.user_id', $user->id)
->select(''shoutout.*'')
->orderBy('shoutout.created_at', 'desc')
->get()

关于php - 基于两个不同因素在数据库中获取最新输入的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40638024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com