Ecto documentation顯示如何執行插值。但我在查詢中需要動態字段。我有幾十個領域,併爲他們每個人寫查詢似乎不具有凝聚力。Ecto查詢中的插值字段如何?
defmodule Hedone.SearchController do
use Hedone.Web, :controller
alias Hedone.User
def idade(conn, %{"idade+" => maior, "idade-" => menor, "campo" => campo}) do
IO.inspect campo
query = from u in User, where: u.campo > ^maior and u.campo < ^menor, select: u.name
pesquisa = Repo.all query
IO.inspect pesquisa
text conn, "Works"
end
end
該控制器生成以下錯誤:
** (Ecto.QueryError) web/controllers/search.ex:8: field `Hedone.User.campo` in `where` does not exist in the schema in query:
from u in Hedone.User,
where: u.campo > ^18 and u.campo < ^40,
select: u.name
自動翻譯。
對於動態fields_的_dozens我寧願用宏去。 – mudasobwa
對不起,我開始編程,並期待將我的想法在線。我沒有閱讀宏會話。爲什麼會更好?所以它工作得很好。 –
@mudasobwa你如何在這裏使用宏?你能擴展一下嗎?我想不出有什麼理由要這樣做,但也許我錯過了一些東西。 – Dogbert