gpt4 book ai didi

elixir - Phoenix : Ordering a query set

转载 作者:行者123 更新时间:2023-12-04 21:51:33 26 4
gpt4 key购买 nike

我是 [菜鸟] 玩 Phoenix 框架以获得乐趣并构建一个小型 twitter 克隆。我一切正常,但是,我想按 updated_at 订购推文字段(升序)。正如您从 tweet_controller 中看到的,我尝试使用 order_by 子句,但这对我没有任何作用。

问题

我如何实现这一目标?在 EEx 内还是在 tweet_controller 本身内?

推文/index.html.eex

<div class="row">
<%= for tweet <- @tweets do %>

<h4><%= tweet.tweet %></h4>

<% end %>
</div>

Controller /tweet_controller.ex
...
alias TodoApp.Tweet

def index(conn, _params) do
tweets = Repo.all(Tweet, order_by: tweet)
render(conn, "index.html", tweets: tweets)
end
...

最佳答案

您需要使用 Ecto Query :

query = from(t in Tweet, order_by: t.updated_at)
tweets = Repo.all(query)

您可能需要考虑在您的 Tweet 模型中为查询定义一个函数。
def ordered(query) do
from t in query,
order_by: t.updated_at
end

您还可以使用函数语法:
def ordered(query) do
query
|> order_by([t], t.updated_at)
end

然后你可以在你的 Controller 中使用它:
tweets = Tweet |> Tweet.ordered() |> Repo.all()

这是关于查询的好帖子: http://blog.drewolson.org/composable-queries-ecto/

关于elixir - Phoenix : Ordering a query set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com