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

data_for_rename

Esta función prepara los datos necesarios para realizar un renombrado de tablas en una consulta SQL.

Signatura

private function data_for_rename(string $id_renombrada, stdClass $init, string $join, string $renombrada): stdClass|array

Parámetros

$id_renombrada (string): El nombre del campo de identificación (ID) renombrado. $init (stdClass): Objeto que contiene información sobre las tablas involucradas en la consulta SQL. $join (string): El tipo de join que se utilizará en la consulta SQL (INNER, LEFT, RIGHT). $renombrada (string): El nombre de la tabla renombrada en la consulta SQL.

Retorna

  • stdClass|array: La función devuelve un objeto stdClass que contiene los datos preparados para realizar el renombrado de tablas en la consulta SQL. En caso de encontrar un error, devuelve un array que contiene detalles del error.

Explicación Detallada

  • Validación de existencia de claves: Se verifica si las claves necesarias ('tabla' y 'tabla_enlace') existen en el objeto $init. Si alguna de las claves falta, se devuelve un mensaje de error.
  • Preparación de la cláusula JOIN: Se construye la cláusula JOIN utilizando el tipo de join y el nombre de la tabla base desde el objeto $init.
  • Preparación de la condición ON: Se construye la condición ON para la cláusula JOIN, vinculando el campo de identificación renombrado con el campo correspondiente de la tabla base.
  • Preparación de la asignación de tabla renombrada: Se asigna un alias a la tabla renombrada para su uso en la consulta SQL.
  • Creación del objeto de datos: Se crea un objeto stdClass que contiene las cláusulas JOIN, ON y la asignación de tabla renombrada preparadas.
  • Devolución de datos preparados: Se devuelve el objeto de datos preparados.

Ejemplos

// Llamada a la función data_for_rename
$id_renombrada = '.id';
$init = new stdClass();
$init->tabla = 'usuarios';
$init->tabla_enlace = 'pedidos';
$join = 'LEFT';
$renombrada = 'u';

$data_rename = data_for_rename($id_renombrada, $init, $join, $renombrada);

echo "Cláusula JOIN: " . $data_rename->join_tabla . "\n";
echo "Condición ON: " . $data_rename->on_join . "\n";
echo "Asignación de tabla renombrada: " . $data_rename->asignacion_tabla . "\n";

/*
En este ejemplo, se llama a la función data_for_rename con los parámetros necesarios para preparar los datos para realizar un renombrado de tablas en una consulta SQL. Se imprime cada parte de los datos preparados para verificar que estén correctos.

*/

Código de la Función

private function data_for_rename(string $id_renombrada, stdClass $init, string $join,
                                    string $renombrada): stdClass|array
    {
        $keys = array('tabla','tabla_enlace');
        $valida = $this->validacion->valida_existencia_keys(keys: $keys,registro:  $init);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al validar $init',data: $valida);
        }

        $join_tabla = $join.' JOIN '.$init->tabla;
        $on_join = $renombrada.$id_renombrada.' = '.$init->tabla_enlace;
        $asignacion_tabla = $join_tabla.' AS '.$renombrada;

        $data = new stdClass();
        $data->join_tabla = $join_tabla;
        $data->on_join = $on_join;
        $data->asignacion_tabla = $asignacion_tabla;
        return $data;
    }