Ecto:Where - 或

ste*_*eel 4 ecto phoenix-framework

看起来这个问题很简单,但是Phoenix Ecto还没有.在此期间,对于Ecto中的where或查询,有什么解决方法?

例如:

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})
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 6

我相信你误解了or_where会做的-你想可以用一个简单的做什么oris_nil:

where: up.project_id != ^project.id or is_nil(up.project_id)
Run Code Online (Sandbox Code Playgroud)

什么or_where使您能够where: expr使用OR而不是在Ecto查询中加入多个AND.在当前版本的Ecto(2.0)中,没有直接的方法可以做到这一点 - Ecto将所有where表达式与一个表达式连接起来AND.