public function donde(array $params = null)
    {
        if ($params) {
            $terminos_sql = [];

            foreach ($params as $llave => $valor) {
                // Limpiamos la llave
                $llave = trim($llave);

                // Extraemos operador
                if (false === ($temp = strpos($llave, ' '))) {
                    $restante = $llave;
                } else {
                    $restante = substr($llave, 0, $temp);
                    $operador = substr($llave, $temp + 1);
                }
                if (empty($operador)) {
                    if (is_array($valor)) {
                        $operador = 'IN';
                    } else {
                        $operador = '=';
                    }
                }

                // Extramos campo y su tipo
                if (false !== ($temp = strpos($restante, '|'))) {
                    $tipo = substr($restante, $temp + 1);
                    $campo = substr($restante, 0, $temp);
                } else {
                    $campo = $restante;
                }
                if (empty($tipo)) $tipo = 'txt';

                // Preparamos el valor segun el tipo de campo
                if (is_array($valor)) {
                    $valor_preparado = '(' . implode(',', $this->prepararValor($valor, $tipo)) . ')';
                } else {
                    $valor_preparado = $this->prepararValor($valor, $tipo);
                }

                // Escribimos el termino dentro de los filtros
                $terminos_sql[] = "{$campo} {$operador} {$valor_preparado}";

                // Limpiamos las variables repetitivas
                unset($restante, $campo, $operador, $tipo);
            }

            // Escribimos todos los terminos en formato SQL
            $this->sentencia .= ' WHERE ' . implode(' AND ', $terminos_sql);

        }

        return $this;
    }
public function donde(array $params = null)
    {
        if ($params) {
            $terminos_sql = [];

            foreach ($params as $llave => $valor) {
                // Limpiamos la llave
                $llave = trim($llave);

                // Extraemos operador
                if (false === ($temp = strpos($llave, ' '))) {
                    $restante = $llave;
                } else {
                    $restante = substr($llave, 0, $temp);
                    $operador = substr($llave, $temp + 1);
                }
                if (empty($operador)) {
                    if (is_array($valor)) {
                        $operador = 'IN';
                    } else {
                        $operador = '=';
                    }
                }

                // Extramos campo y su tipo
                if (false !== ($temp = strpos($restante, '|'))) {
                    $tipo = substr($restante, $temp + 1);
                    $campo = substr($restante, 0, $temp);
                } else {
                    $campo = $restante;
                }
                if (empty($tipo)) $tipo = 'txt';

                // Preparamos el valor segun el tipo de campo
                if (is_array($valor)) {
                    $valor_preparado = '(' . implode(',', $this->prepararValor($valor, $tipo)) . ')';
                } else {
                    $valor_preparado = $this->prepararValor($valor, $tipo);
                }

                // Escribimos el termino dentro de los filtros
                $terminos_sql[] = "{$campo} {$operador} {$valor_preparado}";

                // Limpiamos las variables repetitivas
                unset($restante, $campo, $operador, $tipo);
            }

            // Escribimos todos los terminos en formato SQL
            $this->sentencia .= ' WHERE ' . implode(' AND ', $terminos_sql);

        }

        return $this;
    }
public function donde ( array $ params = null ) { if ( $ params ) { $ terminos_sql = [ ] ; foreach ( $ params as $ llave => $ valor ) { // Limpiamos la llave $ llave = trim ( $ llave ) ; // Extraemos operador if ( false === ( $ temp = strpos ( $ llave , ' ' ) ) ) { $ restante = $ llave ; } else { $ restante = substr ( $ llave , 0 , $ temp ) ; $ operador = substr ( $ llave , $ temp + 1 ) ; } if ( empty ( $ operador ) ) { if ( is_array ( $ valor ) ) { $ operador = 'IN' ; } else { $ operador = '=' ; } } // Extramos campo y su tipo if ( false !== ( $ temp = strpos ( $ restante , '|' ) ) ) { $ tipo = substr ( $ restante , $ temp + 1 ) ; $ campo = substr ( $ restante , 0 , $ temp ) ; } else { $ campo = $ restante ; } if ( empty ( $ tipo ) ) $ tipo = 'txt' ; // Preparamos el valor segun el tipo de campo if ( is_array ( $ valor ) ) { $ valor_preparado = '(' . implode ( ',' , $ this -> prepararValor ( $ valor , $ tipo ) ) . ')' ; } else { $ valor_preparado = $ this -> prepararValor ( $ valor , $ tipo ) ; } // Escribimos el termino dentro de los filtros $ terminos_sql [ ] = "{$campo} {$operador} {$valor_preparado}" ; // Limpiamos las variables repetitivas unset ( $ restante , $ campo , $ operador , $ tipo ) ; } // Escribimos todos los terminos en formato SQL $ this -> sentencia .= ' WHERE ' . implode ( ' AND ' , $ terminos_sql ) ; } return $ this ; }
Prepara los campos que filtran la sentencia interna.

@param array|null $params Campos parametrizados

@return Relacional
Prepara los campos que filtran la sentencia interna .