Tentando obter COUNT (*) do tipo de conteúdo personalizado com EntityFieldQuery


9

Como recuperar o 'count (*)' de uma consulta no drupal 7? A consulta precisa incluir um tipo de conteúdo personalizado e um campo personalizado.

Notas

  • Tipo de conteúdo personalizado: funcionários

  • Nome do campo personalizado: field_employees_email

  • Como uma nota, eu estou olhando para adicionar

    WHERE field_employees_email = 'exemplo@exemplo.com'

para a consulta ...

Até agora, eu tenho algo como:

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

Além disso, existe uma maneira mais fácil do que

$total = count($result); 

retornar a COUNT (*) da consulta?

Respostas:


13

Você pode usar EntityFieldQuery :: count () , conforme relatado na documentação para EntityFieldQuery :: execute () .

[O resultado é] Um número se count()foi chamado ou uma matriz de matrizes associativas de entidades de stub.

O código que você deve usar é semelhante ao seguinte:

$query = new EntityFieldQuery;

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

Para filtrar o resultado pelo tipo de conteúdo, você precisa usar EntityFieldQuery :: entityCondition ('bundle', $ content_type) .
Para condições em campos, você deve usar EntityFieldQuery :: fieldCondition () .


Obrigado @kiamlaluno fieldCondition é o que eu estava procurando. Este post foi muito útil para qualquer outra pessoa busca, bem como: commerceguys.com/blog/checking-out-entityfieldquery
Citricguy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.