我可以使用Ecto.Query查询软删除的,关联的数据库条目,方法如下:
query = from r in Resource,
join a in Association, on: [resource_id: r.id]
where: is_nil(a.deleted_at)
Repo.all(query)
对于一些深层嵌套的关联,这变得乏味。如何使用Ecto.Repo的内置预加载功能查询适用于所有关联的where子句?
我想做类似的事情:
Repo.get(Resource, 1) |> Repo.preload(:association, where: [deleted_at == nil])
这样的事情是否可能,或者我可以使用另一种方法来实现相同的目标?
一种方法是,您应该能够执行以下操作:
def list_resources() do
from(r in Resource, preload: [foo: ^not_deleted(Foo), bar: ^not_deleted(Bar)])
|> Repo.all()
end
def not_deleted(query) do
from(q in query, where: is_nil(q.deleted_at))
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句