0

我想知道在 Phoenixframework 指南网站的 Ecto Model 章节中显示实际用户表的命令是什么:

hello_phoenix_dev=# \d users
Table "public.users"
Column     |            Type             |                     Modifiers
----------------+-----------------------------+----------------------------------------------------
id             | integer                     | not null default nextval('users_id_seq'::regclass)
name           | character varying(255)      |
email          | character varying(255)      |
bio            | character varying(255)      |
number_of_pets | integer                     |
inserted_at    | timestamp without time zone | not null
updated_at     | timestamp without time zone | not null
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
4

1 回答 1

1

列出的命令 ( \d users) 应在 PostgreSQL 交互式终端 (psql) 提示符内调用:

psql -U postgres -W -h localhost hello_phoenix_dev

您在那里显示的用户表来自您的数据库。Ecto 模型不知道您的数据库。您的 Ecto 模态表示将由您的 Repo 存储的数据(这是了解您的数据库的存储机制。)

表和模式匹配很重要。例如,对于您显示的表,您将具有以下架构:

  schema "users" do
    field :name, :string
    field :email, :string
    field :bio, :string
    field :number_of_pets, :integer

    timestamps
  end

这就是 Ecto 使用的方法,以便在您搜索模型时知道 Repo 应该获取哪些数据。

如果您有以下架构:

  schema "users" do
    field :name, :string

    timestamps
  end

即使您有bio, emailandnumber_of_pets在您的表中,它们也不会从数据库中获取或显示在您的 Elixir 结构中。

于 2015-09-11T08:41:03.023 回答