gpt4 book ai didi

elixir - 预加载所有关系

转载 作者:行者123 更新时间:2023-12-04 21:56:32 25 4
gpt4 key购买 nike

我有一个类似于这个的 ERM:

--------     --------     --------
|ModelA|-----|ModelB|-----|ModelC|
-------- -------- --------

我得到 ModelA 和它的 ModelBs 如下:
modela = Repo.get(ModelA,1)
modela = preload(modela, :modelb)

现在我可以访问 ModelB s 与 modela.modelb .但是我如何预加载 ModelC还有?当我打印我的模型 A 时,它说没有加载该模型。

最佳答案

您可以将列表传递给 Repo.preload加载多个关联。您甚至可以传递关键字列表来预加载嵌套关联。
我还发现在查询本身中加载我需要的所有内容很有用(下面的两个选项是等效的):

query = from m in ModelA, preload: [modelb: :modelc]
Repo.get(query, 1)

Repo.get(ModelA, 1) |> Repo.preload(modelb: :modelc)

您还可以使用 {association_name, query} 传递元组用于高级预加载 - 在许多关联中特别有用以指定排序。

您可以在 Ecto.Query.preload/3 docs 中阅读更多有关预加载的文档。

关于elixir - 预加载所有关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33710272/

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