根据列表为Ecto查询重复where子句语句

时间:2017-03-03 11:24:06

标签: postgresql elixir ecto

我正在尝试使用Ecto / postgres创建搜索查询。这是我的查询的第一部分:

query = from l in Log,
  join: u in assoc(l, :user),
  where: u.id == ^current_user.id,
  select: l

用户可以在文本框中键入任意数量的术语(用空格分隔),然后使用这些术语过滤结果集。我正在使用String.split将原始字符串转换为一组where子句(AND'd together),这些子句附加到查询中:

search_term
|> String.split()
|> Enum.map( fn(term) ->
  query = from l in query,
    where: fragment("comment ~* ?", ^term)
end)

除非此声明无效。我假设query赋值仅存在于函数的范围内。命令式思维使我的思绪蒙上阴影。我如何以功能性的方式实现这一目标?

1 个答案:

答案 0 :(得分:1)

  

我假设查询分配仅存在于函数范围内。

是的,确实。

您应该使用glBufferSubData(),并将原始查询作为累加器的初始值传递:

Enum.reduce