Recordに相当するのでしょうか、データベースの抽象化機構です。Phoenixにも欠かせない機能なんですがあまり紹介記事がなさそうなので訳してみました。いえばectoっていうのは「外の...」という意味の接頭語で(ex-なんかと同じ)~魂?が口から「外に出る」エクトプラズム(ectoplasm)なんてのがありましたね(笑)~データベースに直接タッチせず外から触るからついた名前かもしれません。ゴーストバスターズの「作業車」の名前がEcto-1でした。以前の投稿で(ある種ホンモノの)WebアプリをElixirで作成して1今までに私が習ってきたレッスンのいくつかについて簡潔に述べました。今日はEctoを使った組み立て可能なクエリについて詳細を見てみようと思います。Ectoの簡単な紹介から。軽量ORMと考えられます。EctoはElixirのstructを使ってデータベースのテーブルを表現し、データベースのクエリの構築と実行のためのDSLを提供します。つまらない著者なもんで申し訳ないんですが、使い古された「たくさんのコメントを持つ投稿」という例をEctoの能力を示すために使うことにしましょう。次のようなモデルを仮定します。EctoでクエリをEctoは2通りのクエリシンタックスを提供します:キーワードクエリシンタックスとクエリ式です。どちらのクエリスタイルでもクエリの構成はクエリの実行とは分離されたプロセスであることに注意してください。それぞれのスタイルで構成されたクエリはアプリケーションのRepoに渡されて実行されます。キーワードクエリシンタックスキーワードクエリシンタックスはSQLを密接に反映した、LINQを彷彿させるスタイルです。いくつかの例題クエリで説明しましょう。c)クエリ式クエリ式はElixirのAPIでよく見られるパイプラインのコンセプトに従っています。これらのクエリ全てはモデルモジュール(例えばMyApp.Post)から始まっているという点は重要です。モデルそのものがクエリになれるオブジェクトであり与えられたテーブルの全アイテムを表現しています。MyApp.Repo.allクエリの組み立てクエリ式スタイルでどのようにクエリを組み立てるかについては見ればわかりますね...新しい制約をパイプラインに追加するだけです。キーワードクエリシンタックスで作られたクエリや異なるスタイルのクエリからクエリを組み立てるやり方はそれほど明白ではありません。キーワードクエリシンタックスの重要な仕様について理解する必要があります。これを踏まえると、2つの文法スタイルを混ぜてくっつけることができます。ぜんぶまとめるとでは我々のEctoモデルにいい感じの、中身がわかるような名前の関数をいくつか追加しましょう。クエリの組み立てにおいてクエリスタイルがお互いに交換可能であることを示すために両方のクエリスタイルを使っています。追加した関数でいくつかクエリを作ってみましょう。通常、私はこのタイプのクエリの組み立てをPhoenixで使います。引数なしだと以下PostがMyApp.Postと同じ意味になります。MyApp.Repo.allまとめこの記事を通じてソースから取り出して再利用可能なクエリコンポーネントとそれを組み立ててもっと複雑なクエリを作れるEctoのパワーと柔軟性について何らかの見識を持っていただければ幸いです。これらのテクニックを使うとテストを支援する際にも重複や複雑さを減らすことができますよ。前回、作ったものは簡単なブログサイトを実現するアプリのひな形でした。↩デフォルトの状態でEctoを使うとデータベースとしてはPostgresqlが使われます。現時点で設定すればMySQL(もうMariaDBというべきか)とSqlite3も使えます。upLoginユーザーは見つかりませんでした。