给出以下查询:
Cars.where(color: red).limit(5)
有没有办法判断是否达到了限制。假设有6辆红色汽车,我是否需要单独查询以计算红色汽车的总数?
基本上,我正在尝试向用户发送消息,让他们知道由于达到了允许的最大结果数量,搜索受到限制。
答案 0 :(得分:3)
将它组合成一个查询的唯一方法是进行限制(6)。如果大小为6,则删除最后一个元素并记录它们的结果更多。
或者,单独查询Cars.where(颜色:红色).count。虽然这将执行单独的SQL查询,但计数查询有时对数据库来说非常快。
答案 1 :(得分:0)
您问题的直接答案是您无法在一个查询中获取此信息。您必须运行两个查询:一个用于返回有限集,另一个用于查找总计数。
唯一不需要的时间是查询结果的第一页(偏移量为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