2016年9月14日水曜日

「Phoenix」フレームワークで、データのリレーション

Phoenix」フレームワークで、データのリレーションです。ユーザー(User)にビデオ(Video)データを追加しました。

$ mix phoenix.gen.model Video videos name:string approved_at:datetime description:text likes:integer views:integer user_id:references:users

$ mix ecto.migrate
/web/models/user.ex
defmodule HelloPhoenix.User do
  use HelloPhoenix.Web, :model

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

    has_many :videos, HelloPhoenix.Video
    timestamps()
  end
end
/web/controllers/user_controller.ex
def index(conn, _params) do
  users = User |> Repo.all |> Repo.preload([:videos])
  render(conn, "index.html", users: users)
end

def show(conn, %{"id" => id}) do
  user = User |> Repo.get!(id) |> Repo.preload([:videos])
  render(conn, "show.html", user: user)
end
ウェブからアクセスしてみると、「videos」テーブルのSQLクエリが追加されているのがわかります。

参考サイト
Data Relationship and Dependencies(Phoenix)

0 件のコメント:

コメントを投稿