Попытка получить COUNT (*) из пользовательского типа контента с EntityFieldQuery


9

Как я могу получить 'count (*) "из запроса в drupal 7? Запрос должен включать пользовательский тип контента и настраиваемое поле.

Ноты

  • Пользовательский тип контента: сотрудники

  • Имя настраиваемого поля: field_employees_email

  • Как примечание, я ищу, чтобы добавить

    ГДЕ field_employees_email = 'example@example.com'

на запрос ...

Пока что у меня есть что-то вроде:

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

Кроме того, есть ли более простой способ, чем

$total = count($result); 

вернуть СЧЕТ (*) из запроса?

Ответы:


13

Вы можете использовать EntityFieldQuery :: count () , как указано в документации для EntityFieldQuery :: execute () .

[Результатом является] либо число if, которое count()было вызвано, либо массив ассоциативных массивов объектов-заглушек.

Код, который вы должны использовать, похож на следующий:

$query = new EntityFieldQuery;

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

Чтобы отфильтровать результат по типу контента, вам необходимо использовать EntityFieldQuery :: entityCondition ('bundle', $ content_type) .
Для условий на полях вы должны использовать EntityFieldQuery :: fieldCondition () .


Спасибо @kiamlaluno fieldCondition - это то, что я искал. Этот пост был очень полезен для всех, кто ищет: commerceguys.com/blog/checking-out-entityfieldquery
Citricguy
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.