给出以下查询:
Cars.where(color: red).limit(5)
有没有办法判断是否达到了限制。假设有 6 辆红车,是否需要单独查询才能统计红车总数?
基本上,我试图向用户发送一条消息,让他们知道由于达到允许的最大结果数,搜索受到限制。
给出以下查询:
Cars.where(color: red).limit(5)
有没有办法判断是否达到了限制。假设有 6 辆红车,是否需要单独查询才能统计红车总数?
基本上,我试图向用户发送一条消息,让他们知道由于达到允许的最大结果数,搜索受到限制。
将它组合到一个查询中的唯一方法是执行限制(6)。如果大小为 6,则删除最后一个元素并记录它们是更多的结果。
或者,单独查询 Cars.where(color: red).count。尽管这将执行单独的 SQL 查询,但计数查询有时对数据库来说非常快。
对您的问题的直接回答是,您无法在一次查询中获取此信息。您将必须运行两个查询:一个返回有限集,一个查找总数。
唯一不需要这样做的情况是当您查询结果的第一页(偏移量为 0)并且返回的结果数小于限制值时(例如,您将限制设置为 5 但得到 4 个结果背部)。
示例代码如下所示:
limit = 5
cars_scoped = Cars.where(color: red)
cars = cars_scoped.limit(limit)
cars_count = cars.length < limit ? cars.length : cars_scoped.count