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

Agregar campo

Para agregar un campo a una consulta Select, use el método addField():

$title_field = $query->addField('n', 'title', 'my_title');

El código anterior indicará a la consulta seleccionar el campo "title" de la tabla con alias "n" y asignarle el alias "my_title". Si no se especifica un alias, este se generará automáticamente. En la gran mayoría de los casos, el alias generado será simplemente el nombre del campo. En este ejemplo, será "title". Si ese alias ya existe, el alias será el nombre de la tabla y el nombre del campo. En este ejemplo, sería "n_title". Si ese alias también existe, se añadirá un contador al alias hasta encontrar uno no usado, por ejemplo "n_title_2".

Tenga en cuenta que si crea y llena la consulta manualmente y no especifica un alias, y el alias por defecto no está disponible, probablemente haya un error en su código. Sin embargo, si está escribiendo una implementación de hook_query_alter(), no puede saber con certeza qué alias ya se usan, por lo que siempre debe usar el alias generado.

Agregar varios campos

Para seleccionar varios campos, llame a addField() varias veces en el orden deseado. Tenga en cuenta que en la mayoría de los casos el orden de los campos no debería importar, y si importa, probablemente haya una falla en la lógica del módulo.

Alternativamente, puede usar el método fields() para agregar varios campos simultáneamente.

$query->fields('n', ['nid', 'title', 'created', 'uid']);

El método anterior es equivalente a llamar a addField() cuatro veces, una por cada campo. Sin embargo, fields() no soporta especificar un alias para un campo. También devuelve el mismo objeto de consulta para que el método pueda encadenarse, en lugar de devolver los alias generados. Si necesita conocer el alias generado, use addField() o getFields() para acceder a la estructura interna sin procesar de los campos.

Una llamada a fields() sin lista de campos resultará en una consulta «SELECT *».

$query->fields('n');

Esto hará que se incluya "n.*" en la lista de campos de la consulta. Tenga en cuenta que no se crearán alias. Si la tabla que usa SELECT * contiene un campo que también está directamente especificado desde otra tabla, puede ocurrir una colisión de nombres de campos en el conjunto de resultados. En ese caso, el conjunto de resultados contendrá solo uno de los campos con nombre común. Por esta razón, no se recomienda usar SELECT *.

Devolver solo un campo usando fetchField

Use el método fetchField para devolver solo un campo con la consulta, por ejemplo, lo siguiente (ejemplo un poco simple):

$query = $connection->select('node', 'n');
$query->condition('n.nid', 123);
$query->addField('n', 'title');
$result = $query->execute();
return $result->fetchField();
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.