db_select();
を使用してクエリを作成しています。フィールドを使用して追加したフィールドで結果を並べ替える必要があります。 field_data_field_fieldnameとリビジョンを結合するよりも良い方法はありますか?
私は$query->addFieldData("field_foo", "myfoo");
のようなものを望んでいたので、単純に$query->orderBy('myfoo', 'asc');
ノードフィールドを結合するAPIに例がないのも不思議です。
私の知る限りでは、db_select()
はエンティティまたはフィールド(フィールドなど、ノードに追加されるフィールドのコンテキスト)を認識しません。
フィールドテーブルへの結合を自分で行う必要があると思います。私は dbtng_example--dbtng_example.module から少し例を見つけましたが、私の直感と以下のコメントに従って-EntityFieldQuery
が実際にこれを行う唯一の正しい方法です。フィールドは、db_selectを完全に破壊する独自のストレージを定義できるため、...
少しのパフォーマンスヒット(ほとんどの場合無視できる)では、実際にそれを実行する必要がありますDrupal 7つの方法...
Drupal 7のコアにはフィールドがあり、それに伴って EntityFieldQuery は、プロパティ(公開ステータスなど)またはフィールド(field_page_photoなど)によってエンティティ(ノード、用語など)を検索するためのクエリクラスですまたはUIまたはその他の方法で追加したその他のフィールド)
またはAPIから:
このクラスを使用すると、エンティティプロパティ(たとえば、node-> changed)、フィールド値、および一般的なエンティティメタデータ(バンドル、エンティティタイプ、エンティティID、リビジョンID)に基づいてエンティティを検索できます。
ここにいくつかの良い例と議論があります:
そして、私は自分自身を参照していると思います EntityFieldQueryの例が必要ですか? も。