administrador.modelado.joins.string_sql_join.21.24.0 - gamboamartin/administrador GitHub Wiki
string_sql_join
La función string_sql_join genera una cadena SQL para una cláusula JOIN basada en los datos proporcionados.
Signatura
private function string_sql_join( array $data, string $modelo_tabla, string $tabla, string $tabla_renombrada): string|array
Parámetros
$data
: (array) Un array que contiene los datos necesarios para la construcción de la cláusula JOIN.$modelo_tabla
: (string) El nombre del modelo de tabla utilizado para validar los datos.$tabla
: (string) El nombre de la tabla principal en la cláusula JOIN.$tabla_renombrada
: (string) El alias opcional para la tabla principal.
Retorna
string
: La función devuelve la cadena SQL de la cláusula JOIN.
Explicación Detallada
La función primero valida los datos utilizando el modelo de tabla proporcionado.
Verifica que los nombres de las tablas y sus alias no estén vacíos y que no sean numéricos.
Construye la cadena SQL de la cláusula JOIN utilizando los datos proporcionados.
Ejemplos
$data = [
'key' => 'id_usuario',
'enlace' => 'usuarios',
'key_enlace' => 'id'
];
$modelo_tabla = 'Usuarios';
$tabla = 'usuarios';
$tabla_renombrada = 'u';
$sql_join = $this->string_sql_join($data, $modelo_tabla, $tabla, $tabla_renombrada);
// Resultado esperado: "usuarios AS u ON u.id_usuario = usuarios.id"
Código de la Función
private function string_sql_join( array $data, string $modelo_tabla, string $tabla,
string $tabla_renombrada): string|array
{
$valida = (new validaciones())->valida_keys_sql(data:$data, tabla: $modelo_tabla);
if(errores::$error){
return $this->error->error(mensaje: 'Error al validar data', data: $valida);
}
$tabla = trim($tabla);
$tabla_renombrada = trim($tabla_renombrada);
if($tabla === ''){
return $this->error->error(mensaje:'Error $tabla no puede venir vacia', data:$tabla, es_final: true);
}
if($tabla_renombrada === ''){
return $this->error->error(mensaje:'Error $tabla_renombrada no puede venir vacia', data:$tabla_renombrada,
es_final: true);
}
if(is_numeric($tabla)){
return $this->error->error(mensaje:'Error $tabla debe ser un texto', data:$tabla, es_final: true);
}
if(is_numeric($tabla_renombrada)){
return $this->error->error(mensaje:'Error $tabla debe ser un texto', data:$tabla, es_final: true);
}
return "$tabla AS $tabla_renombrada ON $tabla_renombrada.$data[key] = $data[enlace].$data[key_enlace]";
}