GATOR sos un genio!!
Acabo de aplicar ActiveTable y ActiveRecord... esta genial ! Te agradezco por publicarlo, creo que nunca me hubiese enterado... y es mucho más práctica esta solución que la que yo estaba por implementar !
¿Te puedo preguntar algo al respecto?
Estoy "practicando" con un sistema de noticias que quiero manejar con estos dos patrones. Naturalmente voy a presentar un listado de las últimas noticias hasta la fecha, ordenadas por fecha y con un limite para poder paginar.
Mi clase "noticias" que extiende a "AtiveTable" va a tener que darme un array de objetos tipo "noticia" (active record) ¿verdad?
El tema es... necesito un metodo para pedir las noticias con este criterio. En principio supongo que tendria que evaluar la posibilidad de hacerlo con un metodo muy genérico, que lo pueda poner directamente en la clase ActiveTable. En ultima instancia crear un metodo que sea específico de la clase "Noticia".
Cree este metodo para ActiveTable:
Código PHP:
public function findRangedSpecial($field, $value, $compare = '=', $from=0, $to=0) {
// Armo el query suponiendo que no hay limites
$sql = "SELECT * FROM `%s` WHERE `%s` %s '%s'";
$sql = sprintf($sql, $this->table, $field, $compare, $value);
// Si supongo un limite, expando el query
if ($to != 0) {
$sql .= " LIMIT %s, %s";
$sql = sprintf($sql, $from, $to);
}
// Preparamos y ejecutamos la query
$query = $this->_db->prepare();
$query->execute($sql);
$result = array();
$obj = $this->resultObject;
// Creamos un array de objetos para entregar
while ($data = $query->fetch()) {
$result[] = new $obj($data, $this);
}
return $result;
}
Esto a mi me funciona, pero quise preguntar ya que tal vez hay alguna forma más común para esto, teniendo en cuenta que los sistemas de noticias son lo más comun que podemos encontrar!
Te dejo un saludo, y nuevamente, gracias por ese tutorial, es un golazoo !
edu