3

特定の部署にいる人を取得するなど、いくつかのフィルターを作成する必要がありますが、それを行うための最善の方法について考えていました。

それらのいくつかは、複数のテーブルの結合を必要とします。

とQueryBuilderの主な違いを知っている人はいますCDbCriteriaか?特にデータベースとの互換性について知りたいです。

これは、QueryBuilderに関するYiiのドキュメントで見つかりました。

ある程度のDB抽象化を提供し、さまざまなDBプラットフォームへの移行を簡素化します。

CDbCriteriaオブジェクトについても同じですか?いいですか?

4

1 に答える 1

4

の概念はCDbCriteria、Yiiのアクティブレコード(AR)抽象化(通常は常に)を操作するときに使用されます。ARでは、データベース内のさまざまなテーブルのモデルを作成しておく必要があります。

クエリビルダーは、データベースにアクセスするための非常に異なる方法です。事実上、これは構造化されたラッパーであり、文字列として書き出すのではなく、プログラムでSQLクエリを作成できます(追加のボーナスとして、前述のようにある程度のデータベース抽象化も提供します)。

通常のアプリケーションでは、ARはすでに多くの機能を提供しており、同程度のデータベース抽象化も提供しているため、クエリビルダーを使用する必要はほとんどありません。

場合によっては、ARを介して発行するのに便利ではない、またはパフォーマンスが低い、非常に特殊なタイプのクエリを実行したい場合があります。次に、2つのオプションがあります。

  1. クエリが修正されているか、ほぼ修正されている場合は、 DAOを介して簡単に発行できます。実際、クエリビルダーのドキュメントには、「クエリが単純な場合、SQLステートメントを直接記述する方が簡単で高速である」と記載されています。
  2. クエリを動的に構築する必要がある場合は、クエリビルダーがその仕事に適しています。

ご覧のとおり、ほとんどの場合、クエリビルダーはそれほど便利ではありません。非常にカスタマイズされたクエリを作成すると同時に動的に構築されたクエリを作成する場合にのみ、それを使用するのが理にかなっています。

あなたが言及する機能の例は、ARを使用して実装することができ、実装する必要があります。

于 2013-01-12T23:49:07.173 に答える