如何在 select 方法上定义的别名上使用 where 方法
How to use where method on an alias defined on a select method
各位。所以我在查询时遇到了问题。
我有这个代码:
obj = object.select("COALESCE(sum(stock.quantity), 0) as cnt")
它returns
obj.first.cnt
# 0
我想用
过滤计数
object.select("COALESCE(sum(stock.quantity), 0) as cnt").where(cnt: 0)
我无法正常工作。它returns一个
<#Object::ActiveRecord_AssociationRelation:0x3fe455b3ad5c>
这里的问题是 .where(cnt: 0)
会假定 cnt 是 table:
上的一个列
WHERE "objects"."cnt" = ?
AR 实际上并不知道 cnt 是别名。
您可以改为使用字符串文字来引用别名:
object.select("COALESCE(sum(stock.quantity), 0) as cnt")
.where(Arel.sql("cnt = ?"), 0)
各位。所以我在查询时遇到了问题。
我有这个代码:
obj = object.select("COALESCE(sum(stock.quantity), 0) as cnt")
它returns
obj.first.cnt
# 0
我想用
过滤计数object.select("COALESCE(sum(stock.quantity), 0) as cnt").where(cnt: 0)
我无法正常工作。它returns一个
<#Object::ActiveRecord_AssociationRelation:0x3fe455b3ad5c>
这里的问题是 .where(cnt: 0)
会假定 cnt 是 table:
WHERE "objects"."cnt" = ?
AR 实际上并不知道 cnt 是别名。
您可以改为使用字符串文字来引用别名:
object.select("COALESCE(sum(stock.quantity), 0) as cnt")
.where(Arel.sql("cnt = ?"), 0)