注意:コラム参照はaliasTokenを用いてて曖昧さをなくされなければなりません(例えば??.age)。このオプションはバージョン1.0.1から利用できるようになりました。このオプションはBELONGS_TOリレーションには適用されません。選択される列のオフセット。このオプションはBELONGS_TOリレーションには適用されません。以下に上記のオプションのいくつかを含むようなUserにおけるpostsリレーション宣言を修正します。}}さて今$author->postsのようにアクセスする場合、下降順に生成時間によってソートされる著者のポストを得るでしょう。それぞれのポストインスタンスも、その塔載されたカテゴリーを持ちます。列名が結び付けられている2つ以上のテーブルに現れるとき、曖昧さが無い必要があります。テーブル名で列名に接頭辞を付けることによってこれは成されます。idはTeam.idとなります。この自由がありません。したがって、列名の衝突を避けるために、曖昧さを無くす必要がある列の存在を示すために、場所取りを使います。ARは場所取りを適当なテーブル別名と入れ替えて列の曖昧さをなくします。withオプションの両方の場合とも、動的なリレーションのクエリオプションを使用することができます。ダイナミックなオプションは、relations()メソッド中で指定され、既存のオプションを上書きします。上記のUserモデルにおいて、上昇順(リレーション仕様に関するorderオプションは下降順です)である著者に所属するポストを戻すためにイーガーローディングアプローチを使いたいならば、以下のように行います。以降では、リレーショナルクエリを実行するのにレイジーローディングアプローチを使用するときも、動的なクエリオプションを使用できます。リレーション名と同じ名前のメソッドを、パラメータに動的なクエリオプションを指定して呼び出します。統計クエリはバージョン1.0.4からサポートされます。上述のリレーショナルなクエリの他に、Yiiはいわゆる統計クエリ(または集計クエリ)もサポートします。関連したオブジェクト(例えば各々のポストのためのコメントの数、各々の製品の平均点数、その他)に関する集計的な情報を検索することに言及します。統計クエリは、HAS_MANY(例えばポストは多くのコメントを保持します)またはMANY_MANY(例えばポストは多くのカテゴリーに属していますし、カテゴリーには多くのポストがあります)のリレーションを持つオブジェクトのために実行されるのみです。以前に解説したように、統計クエリを実行することはリレーショナルクエリを実行することと非常に類似しています。リレーショナルのクエリで行うように、最初に統計クエリをrelations()中で宣言する必要があります。}}上記において、我々は2つの統計クエリを宣言します。commentCountはポストに属しているコメントの数を計算します。categoryCountはポストが属しているカテゴリーの数を計算します。PostとCommentの関係がHAS_MANYである点に注意してください。このように、統計クエリの宣言は以前のサブセクションで解説したリレーション宣言と非常に類似しています。唯一の違いはリレーションタイプがSTATであるということです。上記の宣言を用いて、$post->commentCountという式でポストに対するコメントの数を取り出すことができます。このプロパティにアクセスするとき、対応する結果を取り出すために暗黙のうちSQL文が実行されます。知っているように、これはいわゆるレイジーローディングアプローチです。複数のポストについてコメント数を決定する必要があるならば、我々はイーガーローディングアプローチを使用することもできます。'categoryCount')->findAll();上記の文は、すべてのポストに対するコメント数とカテゴリー数を取り出すために、3つのSQL文を実行します。レイジーローディングアプローチを使う場合、N個のポストがあるならば2*N+1のSQLクエリを必要とします。デフォルトでは、統計クエリは、COUNT式(従って上記の例ではコメント数とカテゴリー数)を計算します。relations()で宣言するとき、さらにオプションを指定することでカスタマイズ可能です。利用できるオプションは、下の通りまとめられます。デフォルトではCOUNT(*)であり、子オブジェクトの数を意味する。統計クエリの結果を受けないレコードに割り当てられる値。ポストがコメントを持たないならば、そのcommentCountはこの値を取るでしょう。このオプションのデフォルト値は0です。デフォルト値は空です。生成されたSQL文に結合されたパラメータ値。これは名前-値のペアの配列として与えます。デフォルト値は空です。デフォルト値は空です。デフォルト値は空です。組み合わせて実行できます。つの方法で利用できます。リレーションモデルに適用させる方法です。適用する方法を示します。$posts=Post::model()->published()->recently()->with('comments')->findAll();これは、リレーショナルしないクエリにとても似ています。このクエリは、最近公開された投稿とそれらのコメントを返します。適用する方法を示します。$posts=Post::model()->with('comments:recently:approved')->findAll();上記クエリは、全ての投稿とそれらの承認済みコメントを返します。示している事に注意してください。コロン区切りで指定します。オプション中で指定することもできます。approved(承認)されたコメントを返します。定義しなければなりません。結果的に、それらをパラメータ化することはできません。