Generando resultados de consulta
Hay varias formas de generar resultados de consultas:
Matrices de resultados
obtenerResultado()
Este método devuelve el resultado de la consulta como una matriz de objetos, o una matriz vacía en caso de error.
Obtener una matriz de stdClass
Normalmente usarás esto en un foreach bucle, así:
<?php
$query = $db->query('YOUR QUERY');
foreach ($query->getResult() as $row) {
echo $row->title;
echo $row->name;
echo $row->body;
}
El método anterior es un alias de Higgs\Database\BaseResult::getResultObject()
.
Obtener una matriz de matriz
Puede pasar la cadena “matriz” si desea obtener sus resultados como una matriz de matrices:
<?php
$query = $db->query('YOUR QUERY');
foreach ($query->getResult('array') as $row) {
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
El uso anterior es un alias de `getResultArray()`_.
Obtener una matriz de objetos personalizados
También puedes pasar una cadena a getResult()
que representa una clase para
crear una instancia para cada objeto de resultado
<?php
$query = $db->query('SELECT * FROM users;');
foreach ($query->getResult(\App\Entities\User::class) as $user) {
echo $user->name; // access attributes
echo $user->reverseName(); // or methods defined on the 'User' class
}
El método anterior es un alias de `getCustomResultObject()`_.
obtenerArrayResultados()
Este método devuelve el resultado de la consulta como una matriz pura o vacía. matriz cuando no se produce ningún resultado. Normalmente usarás esto en un foreach bucle, así:
<?php
$query = $db->query('YOUR QUERY');
foreach ($query->getResultArray() as $row) {
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
Filas de resultados
obtener fila()
Este método devuelve una única fila de resultados. Si su consulta tiene más de una fila, devuelve solo la primera fila. El resultado se devuelve como un objeto. Aquí hay un ejemplo de uso:
<?php
$query = $db->query('YOUR QUERY');
$row = $query->getRow();
if (isset($row)) {
echo $row->title;
echo $row->name;
echo $row->body;
}
Si desea que se devuelva una fila específica, puede enviar el número de fila como un dígito en el primer parámetro:
<?php
$row = $query->getRow(5);
También puedes agregar un segundo parámetro String, que es el nombre de una clase. para crear una instancia de la fila con:
<?php
$query = $db->query('SELECT * FROM users LIMIT 1;');
$row = $query->getRow(0, \App\Entities\User::class);
echo $row->name; // access attributes
echo $row->reverse_name(); // or methods defined on the 'User' class
getRowArray()
Idéntico al método row()
anterior, excepto que devuelve una matriz.
Ejemplo:
<?php
$query = $db->query('YOUR QUERY');
$row = $query->getRowArray();
if (isset($row)) {
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
Si desea que se devuelva una fila específica, puede enviar el número de fila como un dígito en el primer parámetro:
<?php
$row = $query->getRowArray(5);
Además, puedes caminar hacia adelante/atrás/primero/último a través de tu resultados usando estas variaciones:
$fila = $consulta->getFirstRow()
$fila = $consulta->getLastRow()
$fila = $consulta->getNextRow()
$fila = $consulta->getPreviousRow()
Por defecto devuelven un objeto a menos que pongas la palabra «matriz» en el parámetro:
$fila = $consulta->getFirstRow('matriz')
$fila = $consulta->getLastRow('matriz')
$fila = $consulta->getNextRow('matriz')
$fila = $consulta->getPreviousRow('matriz')
Nota
All the methods above will load the whole result into memory
(captación previa). Utilice getUnbufferedRow()
para procesar archivos grandes
conjuntos de resultados.
getUnbufferedRow()
Este método devuelve una única fila de resultados sin precargar el conjunto
resulta en la memoria como lo hace row()
. Si su consulta tiene más de una fila,
devuelve la fila actual y mueve el puntero de datos internos hacia adelante.
<?php
$query = $db->query('YOUR QUERY');
while ($row = $query->getUnbufferedRow()) {
echo $row->title;
echo $row->name;
echo $row->body;
}
Para usar con MySQLi, puede configurar el modo de resultado de MySQLi en
MYSQLI_USE_RESULT
para ahorrar el máximo de memoria. El uso de esto no es
Generalmente se recomienda, pero puede ser beneficioso en algunas circunstancias.
como escribir consultas grandes en csv. Si cambia el modo de resultado
ser consciente de las compensaciones asociadas con ello.
<?php
$db->resultMode = MYSQLI_USE_RESULT; // for unbuffered results
$query = $db->query('YOUR QUERY');
$file = new \Higgs\Files\File(WRITEPATH . 'data.csv');
$csv = $file->openFile('w');
while ($row = $query->getUnbufferedRow('array')) {
$csv->fputcsv($row);
}
$db->resultMode = MYSQLI_STORE_RESULT; // return to default mode
Nota
When using MYSQLI_USE_RESULT
all subsequent calls on the same
La conexión generará un error hasta que se hayan obtenido todos los registros o
Se ha realizado una llamada freeResult()
. El método getNumRows()
sólo
Devuelve el número de filas según la posición actual del puntero de datos.
Las tablas MyISAM permanecerán bloqueadas hasta que se hayan recuperado todos los registros
o se ha realizado una llamada freeResult()
.
Opcionalmente, puede pasar “objeto” (predeterminado) o “matriz” para especificar el tipo del valor devuelto:
<?php
$query->getUnbufferedRow(); // object
$query->getUnbufferedRow('object'); // object
$query->getUnbufferedRow('array'); // associative array
Objetos de resultados personalizados
En su lugar, puede obtener los resultados como una instancia de una clase personalizada.
de una stdClass
o matriz, como getResult()
y getResultArray()
los métodos lo permiten. Si la clase aún no está cargada en la memoria, el Autocargador
intentará cargarlo. El objeto tendrá todos los valores devueltos desde el
base de datos establecida como propiedades. Si estos han sido declarados y no son públicos
entonces deberías proporcionar un método __set()
para permitir su configuración.
Ejemplo:
<?php
namespace App\Entities;
class User
{
public $id;
public $email;
public $username;
protected $lastLogin;
public function lastLogin($format)
{
return $this->lastLogin->format($format);
}
public function __set($name, $value)
{
if ($name === 'lastLogin') {
$this->lastLogin = DateTime::createFromFormat('!U', $value);
}
}
public function __get($name)
{
if (isset($this->{$name})) {
return $this->{$name};
}
}
}
Además de los dos métodos enumerados a continuación, los siguientes métodos también pueden
tome un nombre de clase para devolver los resultados como: getFirstRow()
, getLastRow()
,
getNextRow()
y getPreviousRow()
.
obtenerObjetoResultadoPersonalizado()
Devuelve el conjunto de resultados completo como una matriz de instancias de la clase solicitada. El único parámetro es el nombre de la clase a crear una instancia.
Ejemplo:
<?php
$query = $db->query('YOUR QUERY');
$rows = $query->getCustomResultObject(\App\Entities\User::class);
foreach ($rows as $row) {
echo $row->id;
echo $row->email;
echo $row->lastLogin('Y-m-d');
}
getCustomRowObject()
Devuelve una sola fila de los resultados de su consulta. El primer parámetro es la fila. número de los resultados. El segundo parámetro es el nombre de la clase para crear una instancia.
Ejemplo:
<?php
$query = $db->query('YOUR QUERY');
$row = $query->getCustomRowObject(0, \App\Entities\User::class);
if (isset($row)) {
echo $row->email; // access attributes
echo $row->lastLogin('Y-m-d'); // access class methods
}
También puedes usar el método getRow()
exactamente de la misma manera.
Ejemplo:
<?php
$row = $query->getRow(0, \App\Entities\User::class);
Métodos auxiliares de resultados
getFieldCount()
El número de CAMPOS (columnas) devueltos por la consulta. Asegúrate de llamar el método que utiliza el objeto de resultado de su consulta:
<?php
$query = $db->query('SELECT * FROM my_table');
echo $query->getFieldCount();
obtener nombres de campo()
Devuelve una matriz con los nombres de los CAMPOS (columnas) devueltos por la consulta. Asegúrese de llamar al método utilizando el objeto de resultado de su consulta:
<?php
$query = $db->query('SELECT * FROM my_table');
echo $query->getFieldNames();
obtenerNumRows()
El número de registros devueltos por la consulta. Asegúrate de llamar el método que utiliza el objeto de resultado de su consulta:
<?php
$query = $db->query('SELECT * FROM my_table');
echo $query->getNumRows();
Nota
Because SQLite3 lacks an efficient method returning a record count, Higgs buscará y almacenará en buffer los registros de resultados de la consulta internamente y devuelve un recuento de la matriz de registros resultante, lo que puede resultar ineficiente.
resultado libre()
Libera la memoria asociada al resultado y elimina el resultado. ID de recurso. Normalmente PHP libera su memoria automáticamente al final de ejecución del script. Sin embargo, si está ejecutando muchas consultas en un script particular es posible que desee liberar el resultado después de cada consulta El resultado se ha generado para reducir el consumo de memoria.
Ejemplo:
<?php
$query = $thisdb->query('SELECT title FROM my_table');
foreach ($query->getResult() as $row) {
echo $row->title;
}
$query->freeResult(); // The $query result object will no longer be available
$query2 = $db->query('SELECT name FROM some_table');
$row = $query2->getRow();
echo $row->name;
$query2->freeResult(); // The $query2 result object will no longer be available
búsqueda de datos()
Este método establece el puntero interno para que la siguiente fila de resultados sea
traído. Sólo es útil en combinación con getUnbufferedRow()
.
Acepta un valor entero positivo, que por defecto es 0 y devuelve verdadero en caso de éxito o falso en caso de fracaso.
<?php
$query = $db->query('SELECT `field_name` FROM `table_name`');
$query->dataSeek(5); // Skip the first 5 rows
$row = $query->getUnbufferedRow();
Nota
Not all database drivers support this feature and will return false. Lo más notable es que no podrás usarlo con PDO.
Referencia de clase
- class Higgs\Database\BaseResult
- getResult([$type = 'object'])
- Parámetros:
$type (
string
) – tipo de resultados solicitados: matriz, objeto o nombre de clase
- Devuelve:
matriz que contiene las filas recuperadas
- Tipo del valor devuelto:
matriz
Un contenedor para
getResultArray()
,getResultObject()
y métodosgetCustomResultObject()
.Uso: consulte Matrices de resultados.
- getResultArray()
- Devuelve:
matriz que contiene las filas recuperadas
- Tipo del valor devuelto:
matriz
Devuelve los resultados de la consulta como una matriz de filas, donde cada La fila es en sí misma una matriz asociativa.
Uso: consulte Matrices de resultados.
- getResultObject()
- Devuelve:
matriz que contiene las filas recuperadas
- Tipo del valor devuelto:
matriz
Devuelve los resultados de la consulta como una matriz de filas, donde cada fila es un objeto de tipo
stdClass
.Uso: consulte Obtener una matriz de stdClass.
- getCustomResultObject($class_name)
- Parámetros:
$class_name (
string
) – nombre de clase para las filas resultantes
- Devuelve:
matriz que contiene las filas recuperadas
- Tipo del valor devuelto:
matriz
Devuelve los resultados de la consulta como una matriz de filas, donde cada fila es una instancia de la clase especificada.
- getRow([$n = 0[, $type = 'object']])
- Parámetros:
$n (
int
) – índice de la fila de resultados de la consulta que se devolverá$type (
string
) – tipo de resultado solicitado: matriz, objeto o nombre de clase
- Devuelve:
la fila solicitada o nula si no existe
- Tipo del valor devuelto:
mixto
Un contenedor para
getRowArray()
,getRowObject()
y MétodosgetCustomRowObject()
.Uso: consulte Filas de resultados.
- getUnbufferedRow([$type = 'object'])
- Parámetros:
$type (
string
) – tipo de resultado solicitado: matriz, objeto o nombre de clase
- Devuelve:
siguiente fila del conjunto de resultados o nula si no existe
- Tipo del valor devuelto:
mixto
Obtiene la siguiente fila de resultados y la devuelve en el formulario solicitado.
Uso: consulte Filas de resultados.
- getRowArray([$n = 0])
- Parámetros:
$n (
int
) – índice de la fila de resultados de la consulta que se devolverá
- Devuelve:
la fila solicitada o nula si no existe
- Tipo del valor devuelto:
matriz
Devuelve la fila del resultado solicitado como una matriz asociativa.
Uso: consulte Filas de resultados.
- getRowObject([$n = 0])
- Parámetros:
$n (
int
) – índice de la fila de resultados de la consulta que se devolverá :returns: la fila solicitada o nula si no existe
- Tipo del valor devuelto:
clase estándar
Devuelve la fila de resultados solicitada como un objeto de tipo
clase estándar
.Uso: consulte Filas de resultados.
- getCustomRowObject($n, $type)
- Parámetros:
$n (
int
) – Índice de la fila de resultados a devolver$class_name (
string
) – nombre de clase para la fila resultante
- Devuelve:
la fila solicitada o nula si no existe
- Tipo del valor devuelto:
$tipo
Devuelve la fila del resultado solicitado como una instancia del clase solicitada.
- dataSeek([$n = 0])
- Parámetros:
$n (
int
) – índice de la fila de resultados que se devolverá a continuación
- Devuelve:
verdadero en caso de éxito, falso en caso de error
- Tipo del valor devuelto:
booleano
Mueve el puntero de la fila de resultados internos al desplazamiento deseado.
Uso: consulte Métodos auxiliares de resultados.
- setRow($key[, $value = null])
- Parámetros:
$key (
mixed
) – nombre de columna o matriz de pares clave/valor$valor (
mixed
) – valor para asignar a la columna, $key es un nombre de campo único
- Tipo del valor devuelto:
nulo
Asigna un valor a una columna en particular.
- getNextRow([$type = 'object'])
- Parámetros:
$type (
string
) – tipo de resultado solicitado: matriz, objeto o nombre de clase
- Devuelve:
siguiente fila del conjunto de resultados, o nula si no existe
- Tipo del valor devuelto:
mixto
Devuelve la siguiente fila del conjunto de resultados.
- getPreviousRow([$type = 'object'])
- Parámetros:
$type (
string
) – tipo de resultado solicitado: matriz, objeto o nombre de clase
- Devuelve:
fila anterior del conjunto de resultados, o nula si no existe
- Tipo del valor devuelto:
mixto
Devuelve la fila anterior del conjunto de resultados.
- getFirstRow([$type = 'object'])
- Parámetros:
$type (
string
) – tipo de resultado solicitado: matriz, objeto o nombre de clase
- Devuelve:
Primera fila del conjunto de resultados, o nulo si no existe
- Tipo del valor devuelto:
mixto
Devuelve la primera fila del conjunto de resultados.
- getLastRow([$type = 'object'])
- Parámetros:
$type (
string
) – tipo de resultado solicitado: matriz, objeto o nombre de clase
- Devuelve:
última fila del conjunto de resultados, o nula si no existe
- Tipo del valor devuelto:
mixto
Devuelve la última fila del conjunto de resultados.
- getFieldCount()
- Devuelve:
Número de campos en el conjunto de resultados
- Tipo del valor devuelto:
int
Devuelve el número de campos del conjunto de resultados.
Uso: consulte Métodos auxiliares de resultados.
- getFieldNames()
- Devuelve:
Matriz de nombres de columnas
- Tipo del valor devuelto:
matriz
Devuelve una matriz que contiene los nombres de los campos en el conjunto resultante.
- getFieldData()
- Devuelve:
matriz que contiene metadatos de campo
- Tipo del valor devuelto:
matriz
Genera una matriz de objetos
stdClass
que contienen metadatos de campo.
- getNumRows()
- Devuelve:
Número de filas en el conjunto de resultados
- Tipo del valor devuelto:
int
Devuelve el número de filas devueltas por la consulta.
- freeResult()
- Tipo del valor devuelto:
nulo
Libera un conjunto de resultados.
Uso: consulte Métodos auxiliares de resultados.