是否可以使用联接值模式在where子句中使用?
filtered = [name: "show", name: "comedy"]
query = from s in Core.Serie, join: t in assoc(s, :tags), where: ^filtered
结果是下一个
#Ecto.Query<from s in Core.Serie, join: t in assoc(s, :tags),
where: s.name == ^"show" and s.name == ^"comedy">
我需要使用标签架构来匹配正确的记录,但是默认情况下使用Serie架构。例如
#Ecto.Query<from s in Core.Serie, join: t in assoc(s, :tags),
where: t.name == ^"show" and t.name == ^"comedy">
答案 0 :(得分:1)
我首先怀疑t.name == ^"show" and t.name == ^"comedy"
是您想要的,主要是因为它从未匹配(name
不能同时是"show"
和 {{1} }同时出现。我猜您想在那里"comedy"
。
为此,我们拥有Ecto.Query.or_where/3
,可以像下面那样减少过滤条件。
or
我还没有测试代码,但是应该可以立即使用。
此外,您可能希望使用Ecto.Query.API.in/2
对具有相同键的过滤器进行分组。