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 = 'example@example.com'

à 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?

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 () .


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.