Echo Schema,其字段既是主键,也是外键

时间:2016-06-17 13:02:46

标签: elixir ecto

我的数据库设计有两个实体:Employee和Manager。 经理ISA员工。

这是我定义员工和经理表的方式:

create table(:employees) do
end

create table(:managers, primary_key: false) do
        add :id, references(:employees, on_delete: :delete_all), primary_key: true
end

我不确定MyApp.Manager模块应该如何运行。如果id列只是一个自定义主键,那么它应该是:

@primary_key {:id, :integer, []}
schema "managers" do
end

但是我应该如何指出:id既是主键又是employee表的外键?

1 个答案:

答案 0 :(得分:7)

belongs_to宏有两个选项,其中一些可以帮助您:

  • foreign_key: :id允许您指定外键名称
  • 您还可以使用define_field: false选项,该选项将使用现有架构字段作为外键,并跳过自己生成一个。

最终的schema声明可能如下所示:

@primary_key {:id, :integer, []}
schema "managers" do
  belongs_to :employee, Employee, define_field: false, foreign_key: :id
end