我为没有id
字段的表生成并运行了迁移(使用字段league_id
作为主键)。我确认迁移可以按预期进行(检查了psql中的数据库,并且该表确实没有id
字段,而league_id
是主键)。
运行Repo.all(League)
时出现以下错误:
13:01:14.962 [debug] QUERY ERROR source="leagues" db=2.8ms
SELECT l0."id", l0."league_id" FROM "leagues" AS l0 []
** (Postgrex.Error) ERROR 42703 (undefined_column): column l0.id does not exist
是否有一种方法可以告诉Repo.all/1
没有id字段(除了手动构建SELECT *
型查询之外?)
答案 0 :(得分:1)
如果您使用的主键列与id
不同,则可以在声明架构时使用@primary_key
属性来指定:
# See documentation link below for what values the options list accepts.
@primary_key {:league_id, :id, []}
schema "leagues" do
...
end
或者如果您不想在查询中使用该列,则可以将键设置为false
:
@primary_key false
schema "leagues" do
...
end
The documentation对此进行了详细说明。
答案 1 :(得分:0)
仅供参考:当存在many_to_many关系时,我还必须覆盖模式块中的字段。
await