Elixirでのecto Querying:初心者のガイド
重要な概念:Ectoは、SQLを密接に反映したデータベースインタラクション用のElixirのDSLです。 機能的には同等ですが、スタイルは異なるキーワードとマクロクエリの構文を提供します。
where
、limit
、offset
、distinct
、group_by
having
count
avg
アプリケーションの開始:sum
min
max
例では、(ここではMySQLが使用されています。他のデータベースに適応できますが、後の例のいくつかはMySQL固有の場合があります。)
ectoing
データベーススキーマ:
ectoing
git clone https://github.com/tpunt/ectoing cd ectoing mix deps.get # Update credentials in config/config.exs mix ecto.create mix ecto.migrate mix run priv/repo/seeds.exs
簡単なクエリから始めましょう。 Elixir Shell(
) すべてのユーザーの取得:
sql:
ecto(キーワード構文):
ecto(マクロ構文):Ecto.Query
iex -S mix
sql:
SELECT * FROM users;
query = Ectoing.User Ectoing.Repo.all(query)
query = Ectoing.User |> Ecto.Query.all() Ectoing.Repo.all(query)
SELECT firstname, surname FROM users;
姓「DOE」でユーザーを選択:
query = from u in Ectoing.User, select: [u.firstname, u.surname] Ectoing.Repo.all(query)
sql:
query = Ectoing.User |> Ecto.Query.select([u], [u.firstname, u.surname]) Ectoing.Repo.all(query)
ecto(キーワード構文):select
ecto(マクロ構文):
異なる姓の選択、順序付け、および制限:sql:
ecto(キーワード構文):
SELECT * FROM users WHERE surname = "doe";
ecto(マクロ構文):
surname = "doe" query = from u in Ectoing.User, where: u.surname == ^surname Ectoing.Repo.all(query)
surname = "doe" query = Ectoing.User |> Ecto.Query.where([u], u.surname == ^surname) Ectoing.Repo.all(query)
ectoは集約関数をサポートしています。
平均的な友人評価を持つユーザーを見つける4以上:
SELECT DISTINCT surname FROM users LIMIT 3 ORDER BY surname;
sql:
query = from u in Ectoing.User, select: u.surname, distinct: true, limit: 3, order_by: u.surname Ectoing.Repo.all(query)
ecto(キーワード構文):
query = Ectoing.User |> Ecto.Query.select([u], u.surname) |> Ecto.Query.distinct(true) |> Ecto.Query.limit(3) |> Ecto.Query.order_by([u], u.surname) Ectoing.Repo.all(query)
ecto(マクロ構文):(キーワードの構文と同様の構造、パイプオペレーターを使用)
結論:この紹介では、Ectoのクエリの基本をカバーしています。 次のステップでは、参加、複雑なクエリ、高度なテクニックの探索が含まれます。 包括的なガイドについては、ECTOドキュメントを参照してください
以上がElixir' s cecto Querying DSL:The Basicsの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。