我有兩種模式,歌曲和投票,歌曲有很多票。我想選擇所有歌曲並計算每個歌曲的票數。如何將Ecto選擇查詢轉換爲Phoenix中的結構?
在SongController index操作,利用混合根任務生成,已被修改爲這樣:
def index(conn, _params) do
query = from s in Song, select: %{id: s.id, name: s.name, artist: s.artist}
songs = Repo.all(query)
render(conn, "index.html", songs: songs)
end
在這種情況下songs
包含列表的列表。但在原始的生成函數中,songs = Repo.all(Song)
這是一個列表宋結構。
這意味着,與以下錯誤消息的模板斷裂song_path功能:maps cannot be converted to_param. A struct was expected, got: %{artist: "Stephen", id: 3, name: "Crossfire"}
當然,我真正想要做的是一個num_votes
場莫名其妙添加到SELECT語句,然後以某種方式對宋體結構做出相應的字段?
我看到Hex.pm通過完全分開的列表解決了類似的問題(一個包的下載次數)。 ([Controller](https://github.com/hexpm/hex_web/blob/master/web/controllers/package_controller.ex#L24),[View](https://github.com/hexpm/hex_web/blob/)主/網頁/模板/包/ index.html的。eex#L67)) – Torstein