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

use*_*621 3 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
Run Code Online (Sandbox Code Playgroud)

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

@primary_key {:id, :integer, []}
schema "managers" do
end
Run Code Online (Sandbox Code Playgroud)

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

mic*_*ala 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
Run Code Online (Sandbox Code Playgroud)