web-dev-qa-db-ja.com

特定のフィールド値のユーザー(エンティティ)を取得するにはどうすればよいですか?

特定の値を入力したユーザーをカスタムユーザーフィールドに返す関数を書きたいのですが。

すべてのユーザーにカスタムの誕生日フィールドがあるとしましょう。特定の誕生日を持つすべてのユーザーを取得するための最良の方法は何ですか?

Field_data_field_birthdayテーブルを検索し、field_birthday_valueが指定された値と一致するentity_id(この場合はユーザーID)を返すDBクエリを作成して、ユーザーをロードできます。

これは少し粗雑に思えますが、このユースケースで使用できる汎用関数はありますか?エンティティAPIまたはフィールドAPIのどちらでしょうか?

8
dschenk

私が尋ねたユースケースの簡単な例:

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'user')
  ->fieldCondition('field_birthday', 'value', $birthday);

$result = $query->execute();
$users_ids = array_keys($result['user']);
12
dschenk