很明显,如何在ecto 1-2级中预先加载关联,例如对它的发布和评论。
我有一个Address
,并且Address
属于一个Street
,还有Street
属于一个{{ 1}}和City
属于地区,以及City
属于一个Region
给出Country
:
Address
如何将其始终预加载到addr = Repo.get(Address, 123)
|> Repo.preload(street: ?????)
:
Country
?
答案 0 :(得分:3)
根据the docs Repo.preload/3
与Ecto.Query.preload/3
类似,您可以将嵌套的预加载列表传递给它们两个。
Repo.preload/3
:addr =
Address
|> Repo.get(123)
|> Repo.preload(street: [city: [region: :country]])
IO.inspect(addr.street.city.region.country)
Ecto.Query.preload/3
:addr =
Address
|> Ecto.Query.where(id: 123)
|> Ecto.Query.preload(street: [city: [region: :country]])
|> Repo.one()
IO.inspect(addr.street.city.region.country)