Elixir 动态预加载表
我在这个查询中动态预加载表Elixir 动态预加载表,elixir,ecto,Elixir,Ecto,我在这个查询中动态预加载表 assoc_models = [:example] from( q in queryable, preload: ^assoc_models ) 结果是: #Ecto.Query<from j in TestModel.Join, preload: [[:example]]> #exto.Query assoc_模型中可以有任意数量的表 有一对额外的支架后预加
assoc_models = [:example]
from(
q in queryable,
preload: ^assoc_models
)
结果是:
#Ecto.Query<from j in TestModel.Join, preload: [[:example]]>
#exto.Query
assoc_模型中可以有任意数量的表
有一对额外的支架后预加载,我想删除
是否有一种方法可以从列表中获取所有项目,然后将其放入预加载中,从而像这样移除支架
#Ecto.Query<from j in TestModel.Join, preload: [:example]>
#exto.Query
谢谢没有额外的括号。如您所见,
preload
和assocs
都在同一个列表中
一对括号围绕此列表,另一对括号围绕预载。没有额外的括号。如您所见,
preload
和assocs
都在同一个列表中
一对括号围绕着这个列表,另一对括号围绕着您的预加载。我假设您想要自动预加载任何给定模式的所有关联。模式模块有一个
。\uuuuu模式/uuu1
函数/宏。要获取如下关联的列表:
iex(15)> OneChat.Schema.Message.__schema__(:associations)
[:user, :channel, :edited_by, :stars, :attachments, :reactions, :mentions]
下面是一个简单的模块,可以在给定模式模块的情况下自动预加载查询
defmodule AutoPreload do
def preload(query, schema_module) do
preloads = schema_module.__schema__(:associations)
Ecto.Query.preload(query, ^preloads)
end
end
这就是行动:
iex(17)> AutoPreload.preload(from(m in OneChat.Schema.Message), OneChat.Schema.Message)
#Ecto.Query<from m in OneChat.Schema.Message,
preload: [[:user, :channel, :edited_by, :stars, :attachments, :reactions, :mentions]]>
iex(17)>AutoPreload.preload(来自(OneChat.Schema.Message中的m),OneChat.Schema.Message)
#异位查询
我假定您希望自动预加载任何给定模式的所有关联。模式模块有一个。\uuuuu模式/uuu1
函数/宏。要获取如下关联的列表:
iex(15)> OneChat.Schema.Message.__schema__(:associations)
[:user, :channel, :edited_by, :stars, :attachments, :reactions, :mentions]
下面是一个简单的模块,可以在给定模式模块的情况下自动预加载查询
defmodule AutoPreload do
def preload(query, schema_module) do
preloads = schema_module.__schema__(:associations)
Ecto.Query.preload(query, ^preloads)
end
end
这就是行动:
iex(17)> AutoPreload.preload(from(m in OneChat.Schema.Message), OneChat.Schema.Message)
#Ecto.Query<from m in OneChat.Schema.Message,
preload: [[:user, :channel, :edited_by, :stars, :attachments, :reactions, :mentions]]>
iex(17)>AutoPreload.preload(来自(OneChat.Schema.Message中的m),OneChat.Schema.Message)
#异位查询
谢谢您的回复。我的意思是我希望这个查询是这样的。预加载:[:示例]>。有没有办法从assoc_模型中获取所有表并将其放入预加载文件中?我怀疑我理解您为什么要解决可视化问题,但您可以使用命名模型:assoc_模型=[example::example]
。这样,第二对括号将不会显示在相应的inspect
代数中。感谢您的回复。我的意思是我希望这个查询是这样的。预加载:[:示例]>。有没有办法从assoc_模型中获取所有表并将其放入预加载文件中?我怀疑我理解您为什么要解决可视化问题,但您可以使用命名模型:assoc_模型=[example::example]
。这样,第二对括号将不会显示在相应的inspect
代数中。