administrador.base.orm._result.data_result - gamboamartin/administrador GitHub Wiki
data_result
Esta función procesa una consulta SQL, ejecutándola, maquetando los resultados, y devolviendo los datos procesados o un mensaje de error en caso de que ocurra algún problema.
Signatura
final public function data_result(array $campos_encriptados, array $columnas_totales, string $consulta, modelo_base $modelo): array|stdClass
Parámetros
-
- $campos_encriptados** (array): Un array que contiene los campos que deben ser encriptados.
-
- $columnas_totales** (array): Un array que contiene las columnas de totales.
-
- $consulta** (string): La consulta SQL que se va a ejecutar.
-
- $modelo** (modelo_base): El modelo base que contiene información adicional sobre la entidad.
Retorna
- array|stdClass: La función devuelve un objeto stdClass que contiene los registros, el número de registros, la consulta SQL, los campos de la entidad, los totales y una versión de los registros convertidos a objetos. Si ocurre un error, devuelve un array con los detalles del error.
Explicación Detallada
-
Validación de la consulta:
-
- Se elimina cualquier espacio en blanco al inicio y final de la consulta.
-
- Si la consulta está vacía después de eliminar los espacios en blanco, se retorna un mensaje de error.
-
Ejecución de la consulta SQL:
-
- Se llama a la función result_sql para ejecutar la consulta SQL y obtener los resultados.
-
- Si ocurre un error durante la ejecución de la consulta, se retorna un mensaje de error.
-
Maquetación de los resultados:
-
- Se llama a la función maqueta_result para procesar y maquetar los resultados obtenidos de la consulta SQL.
-
- Si ocurre un error durante el procesamiento de los registros, se retorna un mensaje de error.
-
Retorno del resultado final:
-
- Si no ocurre ningún error, se retorna el objeto resultante con los datos procesados.
Ejemplos
// Ejemplo de uso de la función data_result
// Supongamos que tenemos un modelo base con la siguiente estructura
class modelo_base {
public $tabla = 'usuarios';
public $campos_entidad = ['id', 'nombre', 'apellido'];
}
$campos_encriptados = ['password'];
$columnas_totales = ['total'];
$consulta = "SELECT * FROM usuarios";
$modelo = new modelo_base();
// Llamada a la función
$resultado = $this->data_result($campos_encriptados, $columnas_totales, $consulta, $modelo);
// El objeto de datos se ha actualizado y convertido los registros a objetos
print_r($resultado);
/*
Imprime:
stdClass Object
(
[registros] => Array
(
[0] => Array
(
[id] => 1
[nombre] => Juan
[apellido] => Pérez
)
[1] => Array
(
[id] => 2
[nombre] => Ana
[apellido] => García
)
)
[n_registros] => 2
[sql] => SELECT * FROM usuarios
[campos_entidad] => Array
(
[0] => id
[1] => nombre
[2] => apellido
)
[totales] => stdClass Object
(
[total] => 100
)
[registros_obj] => Array
(
[0] => stdClass Object
(
[id] => 1
[nombre] => Juan
[apellido] => Pérez
)
[1] => stdClass Object
(
[id] => 2
[nombre] => Ana
[apellido] => García
)
)
)
*/
// Ejemplo de manejo de error
$consulta_vacia = " "; // Consulta vacía
$resultado_error = $this->data_result($campos_encriptados, $columnas_totales, $consulta_vacia, $modelo);
if (is_array($resultado_error)) {
echo "Error: " . $resultado_error['mensaje']; // Imprime: Error: Error consulta vacia
}
Código de la Función
final public function data_result(array $campos_encriptados,array $columnas_totales, string $consulta,
modelo_base $modelo): array|stdClass
{
$consulta = trim($consulta);
if($consulta === ''){
return $this->error->error(mensaje: "Error consulta vacia", data: $consulta.' tabla: '.$modelo->tabla,
es_final: true);
}
$result_sql = $this->result_sql(campos_encriptados: $campos_encriptados,
columnas_totales: $columnas_totales, consulta: $consulta,modelo: $modelo);
if (errores::$error) {
return $this->error->error(mensaje: "Error al ejecutar sql", data: $result_sql);
}
$data = $this->maqueta_result(consulta: $consulta, modelo: $modelo,
n_registros: $result_sql->n_registros, new_array: $result_sql->new_array, totales_rs: $result_sql->totales);
if (errores::$error) {
return $this->error->error(mensaje: "Error al parsear registros", data: $data);
}
return $data;
}