Elixir 如何用长生不老药凤凰制作两个实体关系的脚手架
我设计了类似“TeamRepo”的数据库。预加载(:Team)可以像RoR一样工作 成员_controller.exElixir 如何用长生不老药凤凰制作两个实体关系的脚手架,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
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}