嵌套Ecto预加载上的动态前缀



我们在Ecto中通过将deleted_at列设置为某个日期来使用软删除。

这就是为什么我们的基本模式不是"public",因为在默认情况下,我们不想查询已删除的记录
我们的模式只是一个只包含deleted_at=NULL

然而,出于报告目的,我们必须预加载已删除的记录,我们这样做:

@preload [
tickets: {
from(ticket in Ticket, prefix: "public"),
[
fees: {
from(fee in Fee, prefix: "public"),
[
fee: from(fee1 in Fees.Fee, prefix: "public"),
ticket: from(ticket1 in Ticket, prefix: "public")
]
},
taxes: from(tax in Tax, prefix: "public"),
payments: {from(payment in Payment, prefix: "public"), [:refunds]}
]
}
]

有没有一种方法可以更简单、更不冗长地查询"public"模式中的所有内容?

如果您想从该模式查询所有关联,您可以在Repo.allRepo.oneRepo.preload或用于运行查询的任何其他函数中设置前缀:

Repo.all(query, prefix: "public")
Repo.one(query, prefix: "public")
Repo.preload(entity, @preload, prefix: "public")

最新更新