~desarrollokumbia/kumbia/ActiveRecord

« back to all changes in this revision

Viewing changes to active_record2/active_record2.php

  • Committer: Deivinson Tejeda
  • Date: 2010-01-22 22:44:49 UTC
  • Revision ID: deivinsontejeda@gmail.com-20100122224449-8a03r26ppfuz3963
1->Arreglando el find() para que funcione con y sin chain
2->En el DbQuery 
        ->En el método where se recibe un array para realizar las consultas preparadas (Prepared Statement)
        ->se agrega método para obetener los params para enlazar al SQL
        ->Se agrega método column para indicar las columnas que se quiere en la consulta

3->En el DbAdapter en la construcción del Query en el where se hace un implode directo ya que la consulta es preparada

Ejemplo
//Modelo
    public function buscar()
    {
        $this->get()->columns('nombre, id')
                    ->where(array('id > ?'=>2, 'id<?'=>5))
                    ->limit(2);

        //ejecuta un find() personalizado via chain
        return $this->find();
                         
    }

//Otra forma
    public function buscar()
    {
        //ejecuta un find() por defecto
        return $this->find();
    }

Show diffs side-by-side

added added

removed removed

Lines of Context:
79
79
    /**
80
80
     * Efectua una busqueda
81
81
     *
82
 
     * @param string|array parametros de busqueda 
 
82
     * @param string|array parametros de busqueda
 
83
     * @return ResultSet
83
84
     **/
84
 
    public function find ($params = NULL)
 
85
    public function find ()
85
86
    {
86
87
        if(!$this->_dbQuery){
87
88
            // nuevo contenedor de consulta
88
 
            $dbQuery = new DbQuery();
 
89
            $this->_dbQuery = new DbQuery();
 
90
            $this->_dbQuery->select();
89
91
        }
90
92
        
91
93
        // asigna la tabla
92
 
        $dbQuery->table($this->_table);
 
94
        $this->_dbQuery->table($this->_table);
93
95
        // asigna el esquema si existe
94
96
        if ($this->_schema) {
95
 
            $dbQuery->schema($this->_schema);
96
 
        }
97
 
        // obtiene los parametros de consulta indicados
98
 
        if (! is_array($params)) {
99
 
            $params = Util::getParams(func_get_args());
100
 
            $dbQuery->select(implode(', ', $params));
101
 
            return $this->findBySql($dbQuery);
102
 
        }
 
97
            $this->_dbQuery->schema($this->_schema);
 
98
        }
 
99
        //var_dump($this->_dbQuery->columns('nombre')); die;
 
100
        return $this->findBySql($this->_dbQuery);
103
101
    }
104
102
    public function all ()
105
103
    {}
106
104
    /**
107
105
     * Devuelve la instancia para realizar chain
108
106
     * 
109
 
     * @return Obj DbQuery
 
107
     * @return DbQuery
110
108
     */
111
109
    public function get ()
112
110
    {
113
 
        return $this->_dbQuery = new DbQuery();
 
111
       $this->_dbQuery = new DbQuery();
 
112
       return $this->_dbQuery->select();
114
113
    }
115
114
    /**
116
115
     * Efectua una busqueda de una consulta sql
117
116
     *
118
117
     * @param string | DbQuery $sql
 
118
     * @return ResultSet
119
119
     **/
120
120
    public function findBySql ($sql)
121
121
    {
 
122
        $params = $sql->params();
122
123
        // carga el adaptador especifico para la conexion
123
124
        $adapter = DbAdapter::factory($this->_connection);
124
125
        // si no es un string, entonces es DbQuery
126
127
            $sql = $adapter->query($sql);
127
128
        }
128
129
        // ejecuta la consulta
129
 
        return $adapter->pdo()->query($sql, PDO::FETCH_OBJ);
 
130
        $prepare = $adapter->pdo()->prepare($sql);
 
131
        if ($prepare->execute($params)) {
 
132
            return new ResultSet($prepare);
 
133
        }
 
134
        return FALSE;
130
135
    }
131
136
    /**
132
137
     * Ejecuta una setencia SQL aplicando Prepared Statement
170
175
        }
171
176
        //return FALSE;
172
177
    }
 
178
    
173
179
}