Campos
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();
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.