Es wird versucht, COUNT (*) mit EntityFieldQuery vom benutzerdefinierten Inhaltstyp abzurufen


9

Wie kann ich die Anzahl (*) aus einer Abfrage in Drupal 7 abrufen? Die Abfrage muss einen benutzerdefinierten Inhaltstyp und ein benutzerdefiniertes Feld enthalten.

Anmerkungen

  • Benutzerdefinierter Inhaltstyp: Mitarbeiter

  • Benutzerdefinierter Feldname : field_employees_email

  • Als Anmerkung möchte ich hinzufügen

    WHERE field_employees_email = 'example@example.com'

zur Abfrage ...

Bisher habe ich so etwas wie:

$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();

Auch gibt es einen einfacheren Weg als

$total = count($result); 

um den COUNT (*) von der Abfrage zurückzugeben?

Antworten:


13

Sie können EntityFieldQuery :: count () verwenden , wie in der Dokumentation zu EntityFieldQuery :: execute () angegeben .

[Das Ergebnis ist] Entweder eine Zahl, wenn sie count()aufgerufen wurde, oder ein Array von assoziativen Arrays von Stub-Entitäten.

Der Code, den Sie verwenden sollten, ähnelt dem folgenden:

$query = new EntityFieldQuery;

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

Um das Ergebnis nach dem Inhaltstyp zu filtern, müssen Sie EntityFieldQuery :: entityCondition ('bundle', $ content_type) verwenden .
Für Bedingungen für Felder sollten Sie EntityFieldQuery :: fieldCondition () verwenden .


Vielen Dank @kiamlaluno fieldCondition ist das, wonach ich gesucht habe. Dieser Beitrag war ziemlich hilfreich für alle anderen, die ebenfalls suchen: Commerceguys.com/blog/checking-out-entityfieldquery
Citricguy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.