如何在 Elixir 中获取与 Ecto 的 "belongs_to" 关联?

How to get the "belongs_to" association with Ecto in Elixir?

我有一个 Post 和 Comment 模型。一个post有很多评论,一个评论属于一个post.

显示个人评论时,如何访问它所属的post?

即在 Rails 上的 Ruby 你可以这样做:

@comment = Comment.find(params[:id])
@post = @comment.post

如何使用 Phoenix Elixir 框架实现此目的?我相信我的模型关联设置正确,但我对如何在视图或控制器中实际获取此查询感到困惑。

如果您阅读 Ecto.Schema docs then you will see how to create a belongs_to/3 协会。

defmodule MyApp.Comment do
  use MyApp.Model

  schema "comments" do
    belongs_to :post, MyApp.Post
  end
end

建立关联后,您可以使用Repo.preload/2获取关联。

Repo.preload(comment, :post).post

如果您还没有使用 Ecto.Query.preload/3

获取资源,您也可以在查询中预加载