Elixir 如何用长生不老药凤凰制作两个实体关系的脚手架

Elixir 如何用长生不老药凤凰制作两个实体关系的脚手架,elixir,phoenix-framework,Elixir,Phoenix Framework,我设计了类似“TeamRepo”的数据库。预加载(:Team)可以像RoR一样工作 成员_controller.ex plug :load_teams when action in [:new, :edit] defp load_teams(conn, _ ) do query = from(t in Team, select: {t.team_name, t.id}) teams = Repo.all(query) conn |> assign(:teams, tea

我设计了类似“TeamRepo”的数据库。预加载(:Team)可以像RoR一样工作

成员_controller.ex

plug :load_teams when action in [:new, :edit]

defp load_teams(conn, _ ) do
  query = from(t in Team, select: {t.team_name, t.id}) 
  teams = Repo.all(query)
  conn
  |> assign(:teams, teams)
end

def index(conn, _params) do
  members = Member |> Repo.all() |> Repo.preload(:team)
  render(conn, "index.html", members: members)
end

def show(conn, %{"id" => id}) do
  member = Member |> Repo.get!(id) |> Repo.preload(:team)
  render(conn, "show.html", member: member)
end
index.html.eex

 <%= for member <- @members do %>
   <%= member.team.team_name %>
 <% end %>
我成功了。谢谢。

回购。预加载(:team)可以像RoR一样工作

成员_controller.ex

plug :load_teams when action in [:new, :edit]

defp load_teams(conn, _ ) do
  query = from(t in Team, select: {t.team_name, t.id}) 
  teams = Repo.all(query)
  conn
  |> assign(:teams, teams)
end

def index(conn, _params) do
  members = Member |> Repo.all() |> Repo.preload(:team)
  render(conn, "index.html", members: members)
end

def show(conn, %{"id" => id}) do
  member = Member |> Repo.get!(id) |> Repo.preload(:team)
  render(conn, "show.html", member: member)
end
index.html.eex

 <%= for member <- @members do %>
   <%= member.team.team_name %>
 <% end %>

我成功了。谢谢。

如果您在迁移中指定了该模式包含对其他表的引用,例如,在您的情况下,模式
成员
将包含对
团队
的引用。这意味着成员表中包含
团队id

要使用它,您必须在
团队
模式(旧模式)中修改您的模式,方法是将适当的
属于成员,而
有一个成员
,反之亦然

然后,您应该能够检索特定成员的团队。然后,查询团队名称应该非常容易

例如


如果您在迁移中指定了该模式包含对其他表的引用,例如,在您的示例中,模式
成员
将包含对
团队
的引用。这意味着成员表中包含
团队id

要使用它,您必须在
团队
模式(旧模式)中修改您的模式,方法是将适当的
属于成员,而
有一个成员
,反之亦然

然后,您应该能够检索特定成员的团队。然后,查询团队名称应该非常容易

例如

<%= render "form.html", changeset: @changeset,
                    teams: @teams,
                    action: member_path(@conn, :create) %>
<%= select f, :team_id, @teams, class: "form-control" %>
schema "members" do
  belongs_to :team, PhoenixSample.Team
  timestamps()
end
import Ecto.Query
import Ecto
team_name_query = from m in Member, where: m.id == ^selected_id, join: t in assoc(m, :team), select: {m.id, t.name}