ホームページ > テクノロジー周辺機器 > IT業界 > Elixir' s cecto Querying DSL:The Basics

Elixir' s cecto Querying DSL:The Basics

William Shakespeare
リリース: 2025-02-18 12:03:10
オリジナル
1011 人が閲覧しました

Elixirでのecto Querying:初心者のガイド

重要な概念:

Ectoは、SQLを密接に反映したデータベースインタラクション用のElixirのDSLです。 機能的には同等ですが、スタイルは異なるキーワードとマクロクエリの構文を提供します。

  • などのコア関数は、正確なデータ選択を許可します。
  • 集約関数(
  • wherelimitoffsetdistinct
  • )複雑なデータ計算を有効にします。 group_by havingcountavgアプリケーションの開始:summin 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(

) すべてのユーザーの取得:

Understanding Elixir's Ecto Querying DSL: The Basics sql:

ecto(キーワード構文):

ecto(マクロ構文):Ecto.Query iex -S mix

特定のフィールドの選択(FirstName、姓):

sql:

SELECT * FROM users;
ログイン後にコピー
ecto(キーワード構文):

query = Ectoing.User
Ectoing.Repo.all(query)
ログイン後にコピー
ecto(マクロ構文):

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート