Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 来自ltree的外胚层关联_Elixir_Ecto - Fatal编程技术网

Elixir 来自ltree的外胚层关联

Elixir 来自ltree的外胚层关联,elixir,ecto,Elixir,Ecto,我有一个主题模型,它形成了一个层次结构,带有一个父id键。我希望能够在不进行递归选择的情况下快速访问路径,因此有一个额外的层次结构字段使用Postgres ltrees ltree部分工作正常,在数据库中看起来像这样:1.2.5,其中每个数字都是祖先主题的id 问题是如何加载一个主题,并预加载其祖先主题? 一条有希望的路线似乎是,但我无法让它发挥作用。在控制器中,我有: query = from t in App.Topic, where: fragment("hierarchy @>

我有一个主题模型,它形成了一个
层次结构
,带有一个
父id
键。我希望能够在不进行递归选择的情况下快速访问路径,因此有一个额外的
层次结构
字段使用Postgres ltrees

ltree部分工作正常,在数据库中看起来像这样:
1.2.5
,其中每个数字都是祖先主题的id

问题是如何加载一个主题,并预加载其祖先主题?

一条有希望的路线似乎是,但我无法让它发挥作用。在控制器中,我有:

query = from t in App.Topic, 
  where: fragment("hierarchy @> (SELECT hierarchy FROM topics WHERE id = ?)", ^id)

topic = Repo.get!(Topic, id)
  |> Repo.preload([ancestors: ^query])
我添加了
has_many:祖先,App.Topic,foreign_key::parent_id
,以避免异位对外键的抱怨,但这可能是不正确的

query = from t in App.Topic, 
  where: fragment("hierarchy @> (SELECT hierarchy FROM topics WHERE id = ?)", ^id)

topic = Repo.get!(Topic, id)
  |> Repo.preload([ancestors: ^query])