administrador.base.orm.where.init_params_sql - gamboamartin/administrador GitHub Wiki

init_params_sql

La función init_params_sql se encarga de inicializar los parámetros necesarios para construir una consulta SQL, validando primero la cláusula where basada en un conjunto de filtros y luego asegurándose de que los parámetros estándar (offset, group_by, order, limit) estén presentes en el objeto $complemento. Si se produce algún error durante el ajuste de la cláusula where o la inicialización de los parámetros, la función devuelve un array de error con detalles del problema.

Signatura

final public function init_params_sql(stdClass $complemento, array $keys_data_filter): array|stdClass

Parámetros

stdClass $complemento

  • Tipo: stdClass
  • Descripción: El objeto que contiene la cláusula where y otros filtros que deben ser validados y ajustados. La función también inicializa parámetros adicionales necesarios para construir consultas SQL dinámicas.

array $keys_data_filter

  • Tipo: array
  • Descripción: Un array de claves que representan los filtros que deben ser validados en el objeto $complemento. Estas claves se utilizan para verificar si la cláusula where está correctamente respaldada por filtros con contenido.

Retorno

array|stdClass

  • Tipo: array o stdClass
  • Descripción:
    • Si la operación es exitosa, devuelve el objeto $complemento con la cláusula where ajustada y los parámetros SQL (offset, group_by, order, limit) inicializados.
    • Si ocurre algún error durante la validación de la cláusula where o la inicialización de los parámetros, devuelve un array con un mensaje de error y los detalles correspondientes.

Explicación Detallada

  1. Validación y ajuste de la cláusula where:

    • La función llama a where_filtro para ajustar y validar la cláusula where en función de los filtros especificados en $keys_data_filter. Si where está presente, al menos uno de los filtros debe tener contenido.
    • Si ocurre un error en esta validación, la función devuelve un array con los detalles del error.
    $complemento_w = $this->where_filtro(complemento: $complemento, key_data_filter: $keys_data_filter);
    if (errores::$error) {
        return $this->error->error(mensaje: 'Error ajustar where', data: $complemento_w);
    }
    
  2. Inicialización de los parámetros SQL:

    • Después de ajustar la cláusula where, la función llama a ajusta_params (de la clase inicializacion) para asegurarse de que los parámetros estándar (offset, group_by, order, limit) estén presentes en el objeto $complemento.
    • Si ocurre un error durante la inicialización de estos parámetros, la función devuelve un array con un mensaje de error.
    $complemento_r = (new inicializacion())->ajusta_params(complemento: $complemento_w);
    if (errores::$error) {
        return $this->error->error(mensaje: 'Error al inicializar params', data: $complemento_r);
    }
    
  3. Retorno del objeto ajustado:

    • Si ambas operaciones (ajuste de where e inicialización de parámetros) son exitosas, la función devuelve el objeto $complemento con los ajustes necesarios.
    return $complemento_r;
    

Ejemplos

$complemento = new stdClass();
$complemento->where = "where id = 1";
$complemento->nombre = "Juan";
$complemento->edad = "  ";  // vacío

$keys_data_filter = ['nombre', 'edad'];

$resultado = $this->init_params_sql($complemento, $keys_data_filter);

// Resultado esperado:
// $complemento->where ajustado y parámetros SQL inicializados (offset, group_by, order, limit)

Código de la Función

final public function init_params_sql(stdClass $complemento, array $keys_data_filter): array|stdClass
    {
        $complemento_w = $this->where_filtro(complemento: $complemento,key_data_filter:  $keys_data_filter);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error ajustar where',data: $complemento_w);
        }

        $complemento_r = (new inicializacion())->ajusta_params(complemento: $complemento_w);
        if(errores::$error){
            return $this->error->error(mensaje:'Error al inicializar params',data:$complemento_r);
        }
        return $complemento_r;
    }