administrador.modelado.params_sql.group_by_sql.21.4.0 - gamboamartin/administrador GitHub Wiki
group_by_sql
Esta función privada se encarga de generar la cláusula GROUP BY en una consulta SQL, basada en los campos proporcionados.
Signatura
private function group_by_sql(array $group_by): string|array
Parámetros
$group_by (array): Un arreglo que contiene los campos por los cuales agrupar los resultados en la consulta SQL.
Retorna
- string: La cláusula GROUP BY generada correctamente si los campos son válidos.
- array: Un arreglo que contiene un mensaje de error en caso de que ocurra algún problema durante la generación de la cláusula GROUP BY. El formato del arreglo es el siguiente:
-
- mensaje: El mensaje de error.
-
- data: Los datos relevantes asociados al error, como los campos proporcionados.
-
- es_final: Indica si el error es final y no se pueden realizar más operaciones.
Ejemplos
// Creación de objeto
$objeto = new params_sql();
// Caso 1: Generar la cláusula GROUP BY correctamente
$group_by_campos = ['campo1', 'campo2', 'campo3'];
$resultado = $objeto->group_by_sql($group_by_campos);
// $resultado contendrá la cláusula GROUP BY generada correctamente
// Caso 2: Campo vacío proporcionado
$group_by_campos_vacio = ['campo1', '', 'campo3'];
$resultado = $objeto->group_by_sql($group_by_campos_vacio);
/*
$resultado contendrá un arreglo con un mensaje de error si se proporciona un campo vacío en $group_by
*/
// Caso 3: Campo numérico proporcionado
$group_by_campos_numericos = ['campo1', 123, 'campo3'];
$resultado = $objeto->group_by_sql($group_by_campos_numericos);
/*
$resultado contendrá un arreglo con un mensaje de error si se proporciona un campo numérico en $group_by
*/
Codigo de la función
private function group_by_sql(array $group_by): string|array
{
$group_by_sql = '';
foreach ($group_by as $campo){
$campo = trim($campo);
if($campo === ''){
return $this->error->error(mensaje: 'Error el campo no puede venir vacio', data: $group_by,
es_final: true);
}
if(is_numeric($campo)){
return $this->error->error(mensaje:'Error el campo debe ser un texto', data: $campo, es_final: true);
}
if($group_by_sql === ''){
$group_by_sql.=' GROUP BY '.$campo.' ';
}
else {
$group_by_sql .= ',' . $campo.' ';
}
}
return $group_by_sql;
}