src.where.asigna_data_filtro - gamboamartin/where GitHub Wiki
asigna_data_filtro
La función asigna_data_filtro
es una función pública que crea y retorna un objeto stdClass
que agrupa diferentes tipos de filtros SQL y sentencias, asignando cada filtro a su correspondiente propiedad dentro del objeto. Esto permite organizar y estructurar las diferentes cláusulas SQL de un filtro en un solo lugar para su uso posterior en una consulta.
Signatura
final public function asigna_data_filtro(string $diferente_de_sql, string $filtro_especial_sql,
string $filtro_extra_sql, string $filtro_fecha_sql,
string $filtro_rango_sql, string $in_sql, string $not_in_sql,
string $sentencia, string $sql_extra): stdClass
Parámetros
-
string $diferente_de_sql
:
La cláusula SQL que contiene comparaciones de campos con valores diferentes (<>
). -
string $filtro_especial_sql
:
La cláusula SQL generada por filtros especiales. -
string $filtro_extra_sql
:
La cláusula SQL para filtros adicionales. -
string $filtro_fecha_sql
:
La cláusula SQL que contiene filtros de fechas. -
string $filtro_rango_sql
:
La cláusula SQL generada por filtros de rango (por ejemplo, entre dos valores). -
string $in_sql
:
La cláusula SQL generada para las condicionesIN
. -
string $not_in_sql
:
La cláusula SQL generada para las condicionesNOT IN
. -
string $sentencia
:
La sentencia SQL principal o base, que puede incluir una cláusulaWHERE
. -
string $sql_extra
:
Cualquier SQL adicional que no esté incluido en los demás filtros.
Retorna
stdClass
:
Retorna un objetostdClass
que contiene las diferentes cláusulas SQL como propiedades.
Explicación Detallada
-
Asignación de los valores a las propiedades del objeto:
- La función asigna cada parámetro recibido a una propiedad del objeto
$filtros
. Estas propiedades son:sentencia
: para la sentencia SQL base.filtro_especial
: para filtros SQL especiales.filtro_rango
: para filtros de rango.filtro_extra
: para filtros adicionales.in
: para la cláusulaIN
.not_in
: para la cláusulaNOT IN
.diferente_de
: para la cláusuladiferente de
.sql_extra
: para cualquier SQL adicional.filtro_fecha
: para los filtros relacionados con fechas.
- La función asigna cada parámetro recibido a una propiedad del objeto
-
Retorno del objeto con los filtros:
- La función retorna el objeto
stdClass
que contiene todas las cláusulas SQL organizadas.
- La función retorna el objeto
Ejemplos
$diferente_de_sql = "id_producto <> '123'";
$filtro_especial_sql = "nombre LIKE 'Producto%'";
$filtro_extra_sql = "";
$filtro_fecha_sql = "fecha >= '2023-01-01'";
$filtro_rango_sql = "precio BETWEEN 100 AND 500";
$in_sql = "categoria_id IN (1, 2, 3)";
$not_in_sql = "estado_id NOT IN (4, 5)";
$sentencia = "SELECT * FROM productos WHERE 1=1";
$sql_extra = "ORDER BY nombre";
$filtros = $this->asigna_data_filtro($diferente_de_sql, $filtro_especial_sql, $filtro_extra_sql,
$filtro_fecha_sql, $filtro_rango_sql, $in_sql, $not_in_sql, $sentencia, $sql_extra);
// El objeto retornado tendrá la siguiente estructura:
// $filtros->sentencia = "SELECT * FROM productos WHERE 1=1";
// $filtros->filtro_especial = "nombre LIKE 'Producto%'";
// $filtros->filtro_rango = "precio BETWEEN 100 AND 500";
// $filtros->filtro_extra = "";
// $filtros->in = "categoria_id IN (1, 2, 3)";
// $filtros->not_in = "estado_id NOT IN (4, 5)";
// $filtros->diferente_de = "id_producto <> '123'";
// $filtros->sql_extra = "ORDER BY nombre";
// $filtros->filtro_fecha = "fecha >= '2023-01-01'";
Código de la Función
final public function asigna_data_filtro(string $diferente_de_sql, string $filtro_especial_sql,
string $filtro_extra_sql, string $filtro_fecha_sql,
string $filtro_rango_sql, string $in_sql, string $not_in_sql,
string $sentencia, string $sql_extra): stdClass
{
$filtros = new stdClass();
$filtros->sentencia = $sentencia ;
$filtros->filtro_especial = $filtro_especial_sql;
$filtros->filtro_rango = $filtro_rango_sql;
$filtros->filtro_extra = $filtro_extra_sql;
$filtros->in = $in_sql;
$filtros->not_in = $not_in_sql;
$filtros->diferente_de = $diferente_de_sql;
$filtros->sql_extra = $sql_extra;
$filtros->filtro_fecha = $filtro_fecha_sql;
return $filtros;
}