如何仅从数据库查询中获取前 4 个结果

Posted

技术标签:

【中文标题】如何仅从数据库查询中获取前 4 个结果【英文标题】:How do I grab only first 4 results from a DB query 【发布时间】:2015-04-03 12:19:44 【问题描述】:

在我的 Laravel 项目中,我正在执行一个数据库查询,在其中搜索我的媒体表并获取属于 user_id 的所有结果。结果按多数票按降序排列。但是,这会返回所有用户图像。我只想获取前 4 个结果,而不是全部。如何做到这一点?

我的媒体表如下所示。

| id | user_id | url | votes |

我的控制器是这样的

public function getUserImagesByVote($user_id)


    return Media::where('user_id', $user_id)->orderBy('votes', 'DESC')->get();

【问题讨论】:

Is there a way to "limit" the result with ELOQUENT ORM of Laravel? 的可能重复项 【参考方案1】:

如laravel docs中所述,可以使用take()限制结果,skip()进行偏移

偏移和限制

$users = DB::table('users')->skip(10)->take(5)->get();

在你的情况下使用这个查询

Media::where('user_id', $user_id)->take(4)->orderBy('votes', 'DESC')->get()

【讨论】:

【参考方案2】:

你可以使用 take() 。我相信“Media::where('user_id', $user_id)->orderBy('votes', 'DESC')->take(4)->get();”会有所帮助。你有 lavarvel 提供的 take() 和 skip() 。希望这可以帮助。

【讨论】:

以上是关于如何仅从数据库查询中获取前 4 个结果的主要内容,如果未能解决你的问题,请参考以下文章

如何仅从 ResultSet 中获取第一行

如何仅从 SQL 查询输出中获取不带括号的值

仅从 sequelize 原始查询而不是模型实例中获取 dataValues

oracle如何查询前十个数据

本机查询 - 如何仅从数据库中检索实体的特定列

如何仅从一个特定查询重置缓存