Articles

Cualquier consulta puede tener una “consulta de conteo” correspondiente. La consulta de conteo devuelve el número de filas de la consulta original. Para obtener una consulta de conteo a partir de una consulta existente (que es un objeto de consulta select que implementa SelectInterface), use el método countQuery().

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.

Algunas consultas SQL pueden devolver resultados duplicados. En tales casos, las filas duplicadas pueden filtrarse usando la palabra clave «DISTINCT» en una consulta estática. En una consulta dinámica, use el método distinct().

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.

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:

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.

Para agregar una cláusula WHERE en una consulta dinámica, use el método condition():
$query->condition('bundle', 'article', '=');
El código anterior instruye a la consulta a filtrar resultados al conjunto de artículos. Tenga en cuenta que el nombre del campo aquí debe ser un alias creado por los métodos addField() o addExpression().
Parámetros de Condition
El método condition() acepta tres parámetros:

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.

Una consulta Select siempre devolverá un objeto conjunto de resultados que contiene cero o más registros. Hay varias maneras de obtener datos de este conjunto de resultados dependiendo del caso de uso. Por defecto, los registros se extraen como objetos, a menos que cambie el modo de extracción (ver: setFetchMode).
El caso más común es iterar sobre el conjunto de resultados usando un ciclo foreach().

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.

Las consultas se pueden extraer en objetos basados en clases personalizadas. Por ejemplo, si tenemos una clase llamada ExampleClass, la siguiente consulta devolverá objetos del tipo ExampleClass.
$result = $connection->query("SELECT id, title FROM {example_table}", [], [ 'fetch' => 'ExampleClass', ]);
Si la clase tiene un método __construct(), los objetos serán creados, las propiedades serán añadidas al objeto, y luego se llamará al método __construct(). Por ejemplo, si tienes la siguiente clase y consulta.

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.

Las consultas de inserción siempre deben usar un objeto constructor de consultas. En algunas bases de datos se requiere un manejo especial para campos LOB (Large OBject, por ejemplo TEXT en MySQL) y BLOB (Binary Large OBject), por lo que se necesita un nivel de abstracción para que los controladores de bases de datos individuales puedan implementar cualquier manejo especial que requieran.
Las consultas de inserción se inician usando el método insert() de la siguiente manera:

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.

Las consultas de fusión representan un tipo especial de consulta híbrida. Aunque la sintaxis para ellas está definida en la especificación SQL 2003, prácticamente ninguna base de datos soporta la sintaxis estándar. Sin embargo, la mayoría proporciona una implementación alternativa usando una sintaxis específica para la base de datos. El constructor de consultas de fusión en Drupal abstrae el concepto de consulta de fusión en un objeto estructurado que puede compilarse con la sintaxis correspondiente para cada base de datos.

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.

Las consultas de eliminación siempre deben usar un objeto constructor de consultas. Se ejecutan usando el método delete() de la siguiente manera:
$query = $connection->delete('mytable', $options);
Esto crea un objeto de consulta de eliminación que elimina registros de la tabla mytable. Tenga en cuenta que no se requieren llaves para el nombre de la tabla, ya que el constructor de consultas se encargará de eso automáticamente.

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.

Drupal también soporta transacciones, incluyendo una alternativa transparente para bases de datos que no soportan transacciones. Sin embargo, las transacciones pueden ser bastante complejas si intentas ejecutar dos transacciones simultáneamente. El comportamiento en este caso también depende de la base de datos.

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.