【问题标题】:How to add field in existing table phoenix如何在现有表凤凰中添加字段
【发布时间】:2018-01-29 05:02:39
【问题描述】:

所以我是凤凰城的新手。我在我的凤凰项目中创建了一个简单的api 问题是我想在我的todo.ex 中添加另一个字段

我想在我的 todo.ex 中添加作者字段

来自

defmodule TodoApi.Todo do
  use TodoApi.Web, :model

  schema "todos" do
    field :description, :string

    timestamps()
  end

  def changeset(struct, params \\ %{}) do
    struct
    |> cast(params, [:description])
    |> validate_required([:description])
  end
end

defmodule TodoApi.Todo do
  use TodoApi.Web, :model

  schema "todos" do
    field :description, :string
    field :author, :string

    timestamps()
  end

  def changeset(struct, params \\ %{}) do
    struct
    |> cast(params, [:description, :author])
    |> validate_required([:description, :author])
  end
end

但我收到 postgrex 错误 42703 列 t0.author 不存在

提前谢谢..

【问题讨论】:

    标签: elixir phoenix-framework ecto


    【解决方案1】:

    您需要为 todos 表添加迁移。

    如果您使用 ecto,只需使用 mix ecto.gen.migration todos_add_author_column 生成迁移并在新生成的 priv/repo/migrations/<timestamp>_todos_add_author_column.exs 文件中添加一列,如下所示:

    def change do
      alter table("todos") do
        add :author, :text
      end
    end
    

    Here's a link to docs

    【讨论】:

    • 所以我需要为此创建另一个文件??然后执行 ecto.migrate ?
    • 您可以执行混合任务mix ecto.gen.migration todos_add_author_column。它将为您生成迁移文件。您只需要填充其change 函数
    • 感谢我已经成功生成并迁移了作者字段,现在的问题是我似乎无法使用邮递员添加数据,它只添加描述而不是作者。
    • @Priz,您的TodoApi.Todo 模块与问题中的完全相同吗?
    • 是的,完全一样
    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 2023-03-21
    • 2016-05-03
    • 1970-01-01
    • 2017-04-13
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多