administrador.modelado.params_sql.order_sql.21.10.0 - gamboamartin/administrador GitHub Wiki
order_sql
Esta función genera la cláusula ORDER BY de una sentencia SQL basada en un array de campos y tipos de ordenamiento.
Signatura
private function order_sql(array $order): array|string
Parámetros
$order (array): Un array que contiene los campos y tipos de ordenamiento para la cláusula ORDER BY.
Retorna
- array|string: La función devuelve un array que contiene la cláusula ORDER BY si la generación fue exitosa. En caso de error, devuelve un mensaje de error detallado.
Explicación Detallada
- Inicialización de la cláusula ORDER BY: Se inicializa la variable $order_sql como una cadena vacía que almacenará la cláusula ORDER BY de la sentencia SQL.
- Iteración sobre el array de orden: Se recorre el array $order, el cual contiene los campos y tipos de ordenamiento.
- Verificación de tipo de campo: Se verifica si el campo proporcionado es un número. Si es así, se devuelve un mensaje de error indicando que el campo debe ser de tipo texto.
- Generación de la cláusula ORDER BY: Se construye la cláusula ORDER BY concatenando los campos y tipos de ordenamiento en la variable $order_sql.
- Devolución del resultado: Si la generación de la cláusula ORDER BY fue exitosa, se devuelve la cláusula ORDER BY. En caso de error, se devuelve un mensaje de error indicando la causa del fallo.
Ejemplos
// Llamada a la función order_sql
$order = ['nombre' => 'ASC', 'edad' => 'DESC'];
$resultado = order_sql($order);
if (is_string($resultado)) {
echo "Cláusula ORDER BY generada: " . $resultado;
} else {
echo "Error: " . $resultado['mensaje'];
}
/*En este ejemplo, se llama a la función order_sql con un array de campos y tipos de ordenamiento. Dependiendo del resultado, se imprime la cláusula ORDER BY generada o el mensaje de error correspondiente si se produce algún problema.
*/
Código de la Función
private function order_sql(array $order):array|string{
$order_sql = '';
foreach ($order as $campo=>$tipo_order){
if(is_numeric($campo)){
return $this->error->error(mensaje: 'Error $campo debe ser txt',data: $order, es_final: true);
}
if($order_sql === ''){
$order_sql.=' ORDER BY '.$campo.' '.$tipo_order;
}
else {
$order_sql .= ',' . $campo.' '.$tipo_order;
}
}
return $order_sql;
}