Comment obtenir des utilisateurs (entités) pour une certaine valeur de champ?

8

Je veux écrire une fonction qui renvoie les utilisateurs qui ont entré une certaine valeur dans un champ utilisateur personnalisé.

Disons qu'il existe un champ d'anniversaire personnalisé pour chaque utilisateur. Quelle serait la meilleure façon d'obtenir tous les utilisateurs avec un certain anniversaire?

Je pourrais créer une requête de base de données qui recherche la table field_data_field_birthday et renvoie le (s) entity_id (qui dans ce cas serait l'id (s) des utilisateurs) pour lequel le field_birthday_value correspond à une valeur donnée, puis chargez les utilisateurs.

Cela semble un peu grossier, existe-t-il des fonctions génériques pour ce cas d'utilisation? Dans l'API d'entité ou l'API de champ peut-être?

dschenk
la source

Réponses:

12

Exemple simple pour le cas d'utilisation que j'ai demandé:

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

$result = $query->execute();
$users_ids = array_keys($result['user']);
dschenk
la source
A fonctionné comme un charme.
Anders
Veuillez conseiller l'espace de noms à inclure pour éviter une erreur fatale.
Elève