Essayer d'obtenir COUNT (*) à partir d'un type de contenu personnalisé avec EntityFieldQuery

9

Comment puis-je récupérer le 'count (*)' d'une requête dans drupal 7? La requête doit inclure un type de contenu personnalisé et un champ personnalisé.

Remarques

  • Type de contenu personnalisé: employés

  • Nom de champ personnalisé: field_employees_email

  • En tant que note, je cherche à ajouter

    WHERE field_employees_email = '[email protected]'

à la requête ...

Jusqu'à présent, j'ai quelque chose comme:

$query = new EntityFieldQuery;    

$result = $query
     ->entityCondition('entity_type', 'node')
     ->propertyCondition('status', 1) // Getting published nodes only.
     ->propertyCondition('type', 'employees') //Getting 'employees' type only.
     // How do I include custom field as part of query?
     ->execute();

Existe-t-il également un moyen plus simple

$total = count($result); 

renvoyer le COUNT (*) de la requête?

Citricguy
la source

Réponses:

13

Vous pouvez utiliser EntityFieldQuery :: count () , comme indiqué dans la documentation pour EntityFieldQuery :: execute () .

[Le résultat est] Soit un nombre a count()été appelé, soit un tableau de tableaux associatifs d'entités de stub.

Le code que vous devez utiliser est similaire au suivant:

$query = new EntityFieldQuery;

$count = $query->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'employees')
  ->propertyCondition('status', 1) // Getting published nodes only.
  ->count()
  ->execute();

Pour filtrer le résultat par type de contenu, vous devez utiliser EntityFieldQuery :: entityCondition ('bundle', $ content_type) .
Pour les conditions sur les champs, vous devez utiliser EntityFieldQuery :: fieldCondition () .

kiamlaluno
la source
Merci @kiamlaluno fieldCondition est ce que je cherchais. Ce message a été très utile pour quiconque recherche également: commerceguys.com/blog/checking-out-entityfieldquery
Citricguy