有没有办法更新模式关联中的虚拟字段?

Is there a way to update virtual field in the association of a schema?

谁能帮我解决这个问题?

我有一个使用 postgis 的项目,我正在尝试获取相关数据。

我有一个 table 可以保存代理信息,还有一个 table 可以为每个代理保存区域。 我在区域模式中有一个虚拟字段,我试图从数据库计算值

填充它

see PhoenixGeo.Agents.get_agent_with_ares!(agent.id)

我这样做是为了避免进行两个单独的查询

我遵循了在线提供的做法,但它似乎并没有更新该字段。

这是我的回购协议:https://github.com/alt-ctrl-dev/phoenix_geo(已编辑)

我希望我的最终结果是:

%Agent{
    id:"agent-id"
    ...
    areas: [
      %Area{
         id: "area-id",
         area: <DB_CALCULATED_VALUE>
         ...
      },
    ...
  ]
}

如有任何帮助或指导,我们将不胜感激!

拜托谢谢

我认为

select_merge: %{
  areas: %{area: fragment("st_area(?) * 1000 * 1000", area.geojson_feature)}
}

应该去预加载:

preload: [areas: area, {area: fragment("st_area(?) * 1000 * 1000", area.geojson_feature)}],

我是凭空打字,你可以看看文档中的例子,找出正确的语法: https://hexdocs.pm/ecto/Ecto.Query.html#preload/3