logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll
18/06/2025, by Ivan

Para agrupar por un campo dado, use el método groupBy().

$query->groupBy('uid');

El código anterior indicará a la consulta que agrupe por el campo uid. Tenga en cuenta que el nombre del campo aquí debe ser un alias creado por los métodos addField() o addExpression(), por lo que en la mayoría de los casos querrá usar el valor devuelto por esos métodos para asegurarse de que se usa el alias correcto.

Para obtener el conteo de filas agrupadas por un campo, por ejemplo uid, puede hacer lo siguiente:

$query->addExpression('count(uid)', 'uid_node_count');

Para agrupar por varios campos, simplemente llame a groupBy() varias veces en el orden deseado.

Having

Puede agregar una condición para valores agregados.

$query->having('COUNT(uid) >= :matches', [':matches' => $limit]);

En este ejemplo, se encontrarán los casos donde el número de identificadores uid sea mayor o igual a $limit. Tenga en cuenta que el primer parámetro de having no se filtra antes de enviarse a la base de datos, por lo que los valores del usuario deben pasarse mediante el segundo parámetro.

Ejemplos de groupBy y having

El siguiente código cuenta la cantidad de nodos por UID:

$query = $connection->select('node', 'n')
  ->fields('n', ['uid']);
$query->addExpression('count(uid)', 'uid_node_count');
$query->groupBy("n.uid");
$query->execute();

El siguiente bloque de código toma el ejemplo anterior de conteo de nodos por uid y limita los resultados a uids que tengan al menos 2 registros.

$query = $connection->select('node', 'n')
    ->fields('n',['uid']);
$query->addExpression('count(uid)', 'uid_node_count');
$query->groupBy("n.uid");
$query->having('COUNT(uid) >= :matches', [':matches' => 2]);
$results = $query->execute();

 

Source URL:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.