我尝试创建函数来动态添加过滤器到Ecto查询。 在添加where子句之前,我将连接添加到查询中,因此我使用绑定。 我尝试的是这样的:
def param_to_where(query, field_name, value) do
query |> where([_a, ..., b], b.field_name == value)
end
但结果查询会尝试将值与" field_name"匹配。不存在的列。如何提供动态参数" field_name"和"价值"查询?
我试过这样:
def param_to_where(query, field_name, value) do
query |> where([_a, ..., b], b[field_name] == value)
end
这样:
def param_to_where(query, field_name, value) do
query |> where([_a, ..., b], b.^field_name == value)
end
这样:
def param_to_where(query, field_name, value) do
query |> where([_a, ..., b], b[^field_name] == value)
end
没有任何效果。 静态查询按预期工作:
query |> where([_a, ..., b], b.name = "John")