如何在实现软删除的情况下使用Ecto.Repo的预加载功能

阿尔梅达

我可以使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

默认情况下预加载Ecto关联

如何在不使用 Firebase Cloud 功能的情况下实现推送通知?

ecto删除预加载

插入后如何使用自定义预加载功能?

默认情况下如何在不加载片段的情况下使用导航图?

如何在不加载的情况下使用foreach库

如何在不使用Eureka的情况下配置zuul和功能区以实现负载平衡和故障转移

如何在不删除其中的文件的情况下删除 git repo

如何在现代C ++中没有宏的情况下实现系统特定的功能

如何在不影响父功能的情况下向子按钮添加“删除”功能?

PostgreSQL:如何在不指定参数的情况下删除存在的功能?

如何在%NAN高于特定数字的情况下删除浮点功能?

如何在不重新加载的情况下从超级视图中删除视图?

如何在不删除现有视图的情况下重新加载表?

如何在不知道已保存数据的变量名的情况下使用Octave中的加载功能?

如何在不重新加载页面的情况下使用php页面上的按钮执行功能?

如何在不使用预训练模型的情况下构建计算机视觉模型

如何在没有txt文件的情况下使用bat文件实现ftp功能?或密码可以在txt文件中加密?

如何在预加载功能之外的sapper中访问URL参数?

如何在gorm中实现预加载

如何在不使用ipython的情况下将jupyter notebook配置为具有某些特定的预加载单元格?

如何在不导入Julia的功能的情况下加载软件包模块

如何在不使用 git 命令的情况下通过命令行从 azure 克隆 repo

如何在不使用git命令的情况下检查git repo是否已更新

如何在不使用输入功能的情况下“返回”功能输入?(球拍)

如何在不使用Lua脚本中定义的任何功能的情况下运行功能

如何在不使用类加载器的情况下动态加载Java类?

如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

如何在不使用ImageView的情况下使用Picasso加载位图?