gpt4 book ai didi

elixir - 预加载Ecto中的深层嵌套关联

转载 作者:行者123 更新时间:2023-12-03 16:04:02 26 4
gpt4 key购买 nike

很明显,如何预先在Ecto 1-2级别中预加载关联,例如对它的发布和评论。

我有一个Address,并且Address 属于一个Street,并且Street 属于一个City,并且City 属于 Region,以及Region一个属于

给定Country:

addr = Repo.get(Address, 123)
|> Repo.preload(street: ?????)

我如何将其一直预加载到Address:
IO.puts("the name of country: #{addr.street.city.region.country.name}")

最佳答案

根据the docs的描述,Repo.preload/3Ecto.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)

关于elixir - 预加载Ecto中的深层嵌套关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54796290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com