administrador.base.orm.modelo_base.ejecuta_consulta - gamboamartin/administrador GitHub Wiki
ejecuta_consulta
La función ejecuta_consulta
ejecuta una consulta SQL y retorna los resultados, manejando posibles errores en el proceso. Utiliza la clase _result
para obtener los datos resultantes y verificar las columnas encriptadas y totales.
Signatura
final public function ejecuta_consulta(string $consulta, array $campos_encriptados = array(), array $columnas_totales = array(), array $hijo = array()): array|stdClass
Parámetros
$consulta (string): La consulta SQL que se desea ejecutar. $campos_encriptados (array): Campos que deben ser considerados como encriptados en la consulta. $columnas_totales (array): Columnas totales que deben ser consideradas en la consulta. $hijo (array): Datos adicionales que pueden ser necesarios para la ejecución de la consulta.
Retorna
-
stdClass: Devuelve un objeto stdClass con los resultados de la consulta si la ejecución es exitosa.
-
array: Devuelve un array de error si ocurre algún problema durante la ejecución de la consulta.
Explicación Detallada
-
Asignación de datos adicionales:
-
- Se asignan los datos adicionales proporcionados al atributo hijo de la clase.
-
Verificación de la consulta vacía:
-
- Si la consulta está vacía, se retorna un error indicando que la consulta no puede estar vacía.
-
Asignación del tipo de transacción:
-
- Se asigna el tipo de transacción a 'SELECT'.
-
Ejecución y parseo de la consulta:
-
- Se utiliza la clase _result para obtener y parsear los datos resultantes de la consulta.
-
- Si ocurre algún error durante el parseo, se retorna un array con el mensaje de error y los datos correspondientes.
-
Retorno exitoso:
-
- Si la ejecución y parseo de la consulta son exitosos, se retorna el objeto con los datos resultantes.
Ejemplos
$consulta = 'SELECT * FROM usuarios';
$campos_encriptados = ['password'];
$columnas_totales = ['id', 'nombre', 'email', 'password'];
$hijo = [];
$resultado = $this->ejecuta_consulta($consulta, $campos_encriptados, $columnas_totales, $hijo);
if (is_array($resultado)) {
// Manejar error
print_r($resultado);
} else {
// Usar los datos resultantes de la consulta
print_r($resultado);
}
Código de la Función
final public function ejecuta_consulta(string $consulta, array $campos_encriptados = array(),
array $columnas_totales = array(), array $hijo = array()): array|stdClass{
$this->hijo = $hijo;
if(trim($consulta) === ''){
return $this->error->error(mensaje: 'La consulta no puede venir vacia', data: array(
$this->link->errorInfo(),$consulta),es_final: true);
}
$this->transaccion = 'SELECT';
$data = (new _result())->data_result(campos_encriptados: $campos_encriptados,
columnas_totales: $columnas_totales, consulta: $consulta,modelo: $this);
if (errores::$error) {
return $this->error->error(mensaje: "Error al parsear registros", data: $data);
}
return $data;
}