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;

    }