phoenix-framework - Ecto:哪里 - 或

标签 phoenix-framework ecto

它看起来像 a simple feature即将解决此问题,但 Phoenix Ecto还没有。同时在 Ecto 中进行 where-or 查询的解决方法是什么?

例如:

from(u in User,
    left_join: up in assoc(u, :user_projects),
    # does not work
    where: up.project_id != ^project.id OR up.project_id IS NULL,
    select: {u.id, u.username})

最佳答案

我相信你误会了什么or_where会做——你想要的可以用一个简单的 or 来完成和 is_nil :

where: up.project_id != ^project.id or is_nil(up.project_id)

什么 or_where确实可以让您加入多个where: expr在带有 OR 的 Ecto 查询中而不是 AND .在当前版本的 Ecto (2.0) 中,没有直接的方法可以做到这一点——Ecto 加入所有 where带有 AND 的表达式.

关于phoenix-framework - Ecto:哪里 - 或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40365454/

相关文章:

database - 如何验证映射字段在 Ecto 模型(而不是 Controller )中是否具有特定键?

elixir - 使用字符串查询仓库

elixir - 为什么 Ecto.Repo 进程不需要 `send/receive` ?

elixir - 你能在 Elixir 中创建条件插件吗?

join - 用于自引用关联的 Ecto 查询

elixir - 未找到 Phoenix 显示模块中的 Flash 消息

elixir - 在预加载中添加 Group By 子句

Elixir 如何从 ecto 获取 map

mysql - 使用 Mariaex.Result 结构中的字段

postgresql - 将递归 CTE 与 Ecto 结合使用