administrador.modelado.joins.genera_join.21.12.0 - gamboamartin/administrador GitHub Wiki
genera_join
Esta función genera la cláusula JOIN para ser utilizada en una consulta SQL, considerando las tablas base y de enlace, así como otras opciones como campos renombrados y tipos de join.
Signatura
private function genera_join(string $tabla, string $tabla_enlace, string $campo_renombrado = '',
string $campo_tabla_base_id = '', string $renombrada = '' ): array|string
Parámetros
$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.
$campo_renombrado (string, opcional): El nombre del campo renombrado en la tabla.
$campo_tabla_base_id (string, opcional): El nombre del campo de identificación (ID) en la tabla base.
$renombrada (string, opcional): El nombre de la tabla renombrada 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
- Remoción de prefijo 'models': Se remueve el prefijo 'models' de los nombres de las tablas, si están presentes.
- 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: Se llama a la función sql_join para generar la cláusula JOIN utilizando los parámetros proporcionados.
- Devolución de la cláusula JOIN: Se devuelve la cláusula JOIN generada.
Ejemplos
// Llamada a la función genera_join
$tabla = 'models\\usuarios';
$tabla_enlace = 'models\\pedidos';
$campo_renombrado = 'id_usuario';
$campo_tabla_base_id = 'id';
$renombrada = 'u';
$join_sql = genera_join($tabla, $tabla_enlace, $campo_renombrado, $campo_tabla_base_id, $renombrada);
echo "Cláusula JOIN generada: " . $join_sql;
/*
En este ejemplo, se llama a la función genera_join con los parámetros necesarios para generar la cláusula JOIN en una consulta SQL. El resultado se asigna a la variable $join_sql, que luego se imprime.
*/
Código de la Función
private function genera_join(string $tabla, string $tabla_enlace, string $campo_renombrado = '',
string $campo_tabla_base_id = '', string $renombrada = '' ):array|string{
$tabla = str_replace('models\\','',$tabla);
$tabla_enlace = str_replace('models\\','',$tabla_enlace);
if($tabla === ''){
return $this->error->error(mensaje: 'La tabla no puede ir vacia', data: $tabla, es_final: true);
}
if($tabla_enlace === ''){
return $this->error->error(mensaje: 'El $tabla_enlace no puede ir vacio', data: $tabla_enlace,
es_final: true);
}
$sql = $this->sql_join(campo_renombrado: $campo_renombrado, campo_tabla_base_id: $campo_tabla_base_id,
renombrada: $renombrada, tabla: $tabla, tabla_enlace: $tabla_enlace);
if(errores::$error){
return $this->error->error(mensaje: 'Error al genera sql',data: $sql);
}
return $sql;
}