给出以下查询:
Cars.where(color: red).limit(5)有没有办法判断是否达到了极限。假设有6辆红色汽车,我是否需要做一个单独的查询来计算红色汽车的总数?
基本上,我试图向用户发送一条消息,让他们知道搜索是有限的,因为达到了允许的最大结果数。
发布于 2013-01-08 02:52:07
将其组合到一个查询中的唯一方法是执行限制(6)。如果大小为6,则删除最后一个元素,并记录它们的结果更多。
或者,执行单独的查询颜色(颜色:红色).count。虽然这将执行单独的SQL查询,但对于数据库来说,count查询有时非常快。
发布于 2013-01-08 03:11:57
对你的问题的直接回答是,你不能在一次查询中得到这些信息。您必须运行两个查询:一个用于返回有限集,另一个用于查找总数。
只有当您查询第一页结果(偏移量为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.counthttps://stackoverflow.com/questions/14202056
复制相似问题