如何使用嵌套关系编写ecto代码

田广

我有以下数据库表关系。

Prefecture1-1 Member1-NMemberAction

如果要使用SQL,我想获取数据。

    SELECT A.action, M.member_name, 
      FROM MemberAction A
      JOIN Member M 
        ON M.id = A.member_id
      JOIN Prefecture P
        ON M.prefecture_id = P.id

但是我不知道用Ecto编写代码。以下代码不起作用。因为MemberAction does not have association

    query = from a in MemberAction,
            where: a.id == ^action_id,
            preload: [:member, :prefecture]
    Repo.all(query)

请给我一些建议。

谢谢。

明智的

您如何定义架构?确保它们类似于以下内容:

defmodule YourApp.Schema.Prefecture do
  use Ecto.Schema
  schema "prefectures" do
    # your fields

    has_one(:member)
  end
end

defmodule YourApp.Schema.Member do
  use Ecto.Schema
  schema "members" do
    # your fields

    belongs_to(:prefecture)
    has_many(:member_actions)
  end
end

defmodule YourApp.Schema.MemberAction do
  use Ecto.Schema
  schema "member_actions" do
    # your fields

    belongs_to(:member)
  end
end

然后您应该能够使用与您的查询非常相似的查询

    query = from a in MemberAction,
            where: a.id == ^action_id,
            preload: [member: :prefecture]
    Repo.all(query)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用嵌套的for循环编写此代码?

如何使用嵌套的 for 和 ifs 为 python 代码编写 jinja 模板?

如何为给定的代码段编写递归关系

如何使用 Jackson 编写嵌套的 JSON?

如何使用嵌套联接编写选择语句

如何使用`yarn`覆盖嵌套的依赖关系?

如何使用ValueObjects定义嵌套模型关系

如何更简洁地编写用于拼合嵌套列表的代码

如何在JSX中编写嵌套循环以减少重复代码?

如何在几行Python代码中编写许多嵌套的for循环?

如何在方法中编写嵌套的for循环(干净代码)

如何使用嵌套子查询 SQL 获取嵌套关系实体?

如何使用Tornado框架编写异步代码?

如何使用php在文件中编写代码

如何使用 python range() 编写相同的代码?

如何编写嵌套查询?

如何编写嵌套 if 语句?

如何过滤嵌套关系

如何使用编写的Xtend Generator代码在Xtext中生成代码?

如何在Ecto中编写where子句

如何在Ecto中更新关系?

如何使用嵌套的“ if”语句减少代码重复?

如何正确使用嵌套的异步代码?

Elixir Ecto:如何使用belongs_to和has_many编写迁移?

Ansible剧本-如何使用多个if条件嵌套嵌套的代码?

使用Elixir Ecto,如何在迁移中添加has_many关系?

在Rails 4中,我如何编写将检索对象而不是活动记录关系的代码?

如何编写计算2个数字的相关系数的R代码

如何使用Slick 3.0编写可读的嵌套联接查询