administrador.modelado.joins.sql_join.21.12.0 - gamboamartin/administrador GitHub Wiki

sql_join

Esta función genera la cláusula JOIN para ser utilizada en una consulta SQL.

Signatura

private function sql_join(string $campo_renombrado, string $campo_tabla_base_id, string $renombrada, string $tabla,
                          string $tabla_enlace): array|string

Parámetros

$campo_renombrado (string): El nombre del campo renombrado en la tabla.

$campo_tabla_base_id (string):El nombre del campo de identificación (ID) en la tabla base.

$renombrada (string): El nombre de la tabla renombrada en la consulta SQL.

$tabla (string): El nombre de la tabla base en la consulta SQL.

$tabla_enlace (string): El nombre de la tabla enlazada en la consulta SQL.

Retorna

  • string|array: La función devuelve un array que contiene la cláusula JOIN preparada para ser utilizada en una consulta SQL. En caso de encontrar un error, devuelve un string que contiene detalles del error.

Explicación Detallada

  • Inicialización del tipo de join: Se establece el tipo de join como LEFT.
  • Validación de nombres de tablas: Se valida que los nombres de las tablas no estén vacíos.
  • Generación de la cláusula JOIN: Si se proporciona un nombre de tabla renombrada, se genera la cláusula JOIN utilizando la función genera_join_renombrado. De lo contrario, se construye la cláusula JOIN estándar.
  • Devolución de la cláusula JOIN: Se devuelve la cláusula JOIN generada.

Ejemplos

// Llamada a la función sql_join
$campo_renombrado = 'id_usuario';
$campo_tabla_base_id = 'id';
$renombrada = 'u';
$tabla = 'usuarios';
$tabla_enlace = 'pedidos';

$sql_join = sql_join($campo_renombrado, $campo_tabla_base_id, $renombrada, $tabla, $tabla_enlace);

echo "Cláusula JOIN generada: " . $sql_join;


/*
En este ejemplo, se llama a la función sql_join con los parámetros necesarios para generar la cláusula JOIN en una consulta SQL. El resultado se asigna a la variable $sql_join, que luego se imprime.
*/

Código de la Función

private function sql_join(string $campo_renombrado, string $campo_tabla_base_id, string $renombrada, string $tabla,
                              string $tabla_enlace): array|string
    {
        $join = 'LEFT';
        $tabla = trim($tabla);
        if($tabla === ''){
            return $this->error->error(mensaje: 'Error $tabla esta vacia',data:  $tabla, es_final: true);
        }
        $tabla_enlace = trim($tabla_enlace);
        if($tabla_enlace === ''){
            return $this->error->error(mensaje: 'Error $tabla_enlace esta vacia', data: $tabla_enlace, es_final: true);
        }

        if($renombrada !==''){
            $sql = $this->genera_join_renombrado(campo_renombrado: $campo_renombrado,
                campo_tabla_base_id: $campo_tabla_base_id,join: $join, renombrada: $renombrada,tabla: $tabla,
                tabla_enlace: $tabla_enlace);
            if(errores::$error ){
                return $this->error->error(mensaje: 'Error al generar sql', data: $sql);
            }
        }
        else {

            $sql = ' '.$join.' JOIN ' . $tabla . ' AS ' . $tabla . ' ON ' . $tabla . '.id = ' . $tabla_enlace . '.'
                . $tabla . '_id';
        }

        return $sql;
    }