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

标签 php mysql laravel

我有一个基于 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/

相关文章:

php - 随机为我网站的每个页面分配一个图像?

php - Laravel,composer 安装,不安装laravel/framework 升级到5.8

mysql - sqlBuddy 不接受此 .sql 文件导入

php - laravel中的递归外键

php - 未找到列 : 1054 Unknown column `last field` in INSERT Query?

php - 在 Selenium 中断言重定向的最佳方式是什么?

Javascript 不从数据库添加变量

php - 如何从$_SESSION获取作者的id和姓名到数据库?

MySql 查询避免负余额

php - 使用 Laravel 服务提供者覆盖连接器类