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;
    }