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 condiciones IN.

  • string $not_in_sql:
    La cláusula SQL generada para las condiciones NOT IN.

  • string $sentencia:
    La sentencia SQL principal o base, que puede incluir una cláusula WHERE.

  • string $sql_extra:
    Cualquier SQL adicional que no esté incluido en los demás filtros.

Retorna

  • stdClass:
    Retorna un objeto stdClass que contiene las diferentes cláusulas SQL como propiedades.

Explicación Detallada

  1. 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áusula IN.
      • not_in: para la cláusula NOT IN.
      • diferente_de: para la cláusula diferente de.
      • sql_extra: para cualquier SQL adicional.
      • filtro_fecha: para los filtros relacionados con fechas.
  2. Retorno del objeto con los filtros:

    • La función retorna el objeto stdClass que contiene todas las cláusulas SQL organizadas.

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;
    }