所以我在order_by
函数的查询中使用preload
时遇到了麻烦。
通常我在这个order_by
函数中使用list_member
LIST_MEMBER
def list_members() do
query =
from(
p in Member,
select: p,
order_by: [desc: p.inserted_at], # descending order
preload: [:avatar]
)
Repo.all(query)
end
但在我的get_member_2
功能,我不知道在哪里放order_by
def get_member_2!(id) do
query =
from(
p in Member,
where: p.id == ^id,
select: p,
preload: [:avatar],
preload: [:activities] # How to order_by in here
)
Repo.one!(query)
end
你必须创建一个子查询并在那里订购
def get_member_2!(id) do
query =
from(
p in Member,
where: p.id == ^id,
select: p,
preload: [
:avatar,
activities:
^from(
a in Activity,
order_by: [desc: a.inserted_at]
)
]
)
Repo.one!(query)
end
成员和活动的匹配是自动完成的