预加载模型架构
Pre-loading Model Schema
所以我在下面列出了架构及其关联。
用户
has_one avatar
has_many posts
has_many comments
头像
belongs_to user
post
belongs_to user
has_many comments
评论
belongs_to user
belongs_to post
我的问题是我正在尝试加入我的 post -> 评论 -> user -> avatar in a query.
def get_post_comments!(id) do
query =
from(
p in Post,
where: p.id == ^id,
select: p,
join: c in assoc(p, :comments),
join: l in assoc(c, :user),
join: d in assoc(l, :avatar),
preload: [comments: {c, user: l, avatar: d}]
)
IO.inspect(Repo.one!(query))end
我收到
错误
(Ecto.QueryError) field BazaarApp.Market.Comment.avatar
in preload is not an association in query:
修复了忘记添加括号的笨拙错误。
来自
preload: [comments: {c, user: l, avatar: d}]
到
preload: [comments: {c, [user: {l, avatar: d}] }]
所以我在下面列出了架构及其关联。
用户
has_one avatar
has_many posts
has_many comments
头像
belongs_to user
post
belongs_to user
has_many comments
评论
belongs_to user
belongs_to post
我的问题是我正在尝试加入我的 post -> 评论 -> user -> avatar in a query.
def get_post_comments!(id) do
query =
from(
p in Post,
where: p.id == ^id,
select: p,
join: c in assoc(p, :comments),
join: l in assoc(c, :user),
join: d in assoc(l, :avatar),
preload: [comments: {c, user: l, avatar: d}]
)
IO.inspect(Repo.one!(query))end
我收到
错误(Ecto.QueryError) field
BazaarApp.Market.Comment.avatar
in preload is not an association in query:
修复了忘记添加括号的笨拙错误。
来自
preload: [comments: {c, user: l, avatar: d}]
到
preload: [comments: {c, [user: {l, avatar: d}] }]