5

データベースとクエリ(フロントエンドからのもの)から始めたばかりで、特定の を含むフィールドから最新のエントリを選択したいと思いtitleますPage1。私を助けることができる 2 つのフィールドがあることを知っています: 1) created_at- 最新のものだけを選択して注文できます。2)id-すべてのエントリが新しいを生成することを知っているidので、最大のものを取得できますid; 「標準」の編集コントローラーアクションに適用したい:

 def edit(conn, %{"id" => id}) do
    user = Repo.get(User, id)
    changeset = User.update_changeset(user)
    render(conn, "edit.html", user: user, changeset: changeset)
  end

ですから、どちらの方法が優れているかを知り、クエリの例を見てみたいと思います。

4

2 に答える 2

9

フィールドの使用はid、主キーが整数であることに依存します。現在はそうかもしれませんが、今後もそうでしょうか?inserted_at常に時間フィールドになると確信できるので、それを使用します。どちらを使用する場合でも、最新のアイテムが最初になるように降順で並べてください。

title = "Page 1"
query = Ecto.Query.from(e in Entry,
  where: e.title == ^title,
  order_by: [desc: e.inserted_at],
  limit: 1)
most_recent = Repo.one(query)

Ecto では、デフォルトで挿入時間が取り込まれ、取り込まれinserted_atないことに注意してcreated_atください。created_fieldinserted_at

于 2015-09-18T14:03:23.490 に答える