ElixirのEctoでWHERE文に変数を利用する



SELECT * FROM members WHERE name LIKE '%hoge%';

のようなLIKE句の文字列を変数にしたい時の方法です。

リクエストパラメータの、wordというパラメータを利用する場合:

def index(conn, params) do
    query = from member in members,
        where: like(member.name, ^("%#{params['word'}%")), 
        select: id,name,email
    query |> Repo.all
end

(参考) 直接SQL文に記述することも出来ます。

{:ok, result} = Ecto.Adapters.SQL.query(Repo,
      "SELECT id,name,email FROM members WHERE name LIKE '%#{word}%' ",[])


プログラミングElixir

プログラミングElixir