Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/09/2011, 10:37
ZanPHP
 
Fecha de Ingreso: septiembre-2011
Mensajes: 9
Antigüedad: 13 años, 5 meses
Puntos: 0
Información ZanPHP: Ejemplos básicos de cómo utilizar el ActiveRecord

Hola a todos en esta ocasión vamos a aprender a cómo utilizar el Active Record de ZanPHP con unos ejemplos bastante sencillos.

Primero que nada necesitamos crear una nueva aplicación, en esta ocasión le llamaremos "agenda" y crearemos su respectiva carpeta dentro de applications/, de igual forma la carpeta controllers/ y models/ dentro de la aplicación.

Lo siguiente será crear una base de datos con la siguiente tabla y algunos registros para empezar:

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `zan_agenda` (
  2.   `ID_Contact` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `Name` VARCHAR(50) NOT NULL,
  4.   `Email` VARCHAR(50) NOT NULL,
  5.   `Phone` VARCHAR(15) NOT NULL,
  6.   PRIMARY KEY (`ID_Contact`)
  7. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
  8.  
  9. INSERT INTO `zan_agenda` (`ID_Contact`, `Name`, `Email`, `Phone`) VALUES
  10. (1, 'Carlos Santana', '[email protected]', '324346456'),
  11. (2, 'Héctor Ceron', '[email protected]', '21323432');

Una vez creada la tabla y los registros de prueba, vamos a crear nuestro controlador, favor de copiar y guardar el siguiente código con el nombre controller.agenda.php.

Código PHP:
<?php
/* Access from index.php: */
if(!defined("_access")) {
    die(
"Error: You don't have permission to access here...");
}

class 
Agenda_Controller extends ZP_Controller {
    
    public function 
__construct() {
        
$this->application $this->app("agenda");
        
        
$this->Agenda_Model $this->model("Agenda_Model");

        
$this->Templates $this->core("Templates");
        
        
$this->Templates->theme(_webTheme);
    }
    
    public function 
index() {        
        print 
__("Hi, I'm agenda");
    }
    
    public function 
getContact($contactID 0) {
        
$data $this->Agenda_Model->getContact($contactID);
        
        
____($data);
    }
    
    public function 
getContactByEmail($email NULL) {
        
$data $this->Agenda_Model->getContactByEmail($email);
        
        
____($data);    
    }
    
    public function 
getContactBySearch($search NULL) {
        
$data $this->Agenda_Model->getContactBySearch($search);
        
        
____($data);    
    }
    
    public function 
getContactByQuery() {
        
$data $this->Agenda_Model->getContactByQuery();
        
        
____($data);    
    }
}
?>
En este controlador cargamos nuestro modelo Agenda y en cada método del controlador mandamos a llamar a cada método del modelo, y el resultado ($data) le pasamos la función ____() (4 guiones bajos) el cual es el equivalente a hacer un die(var_dump()), para que nos muestren los datos. Una vez creado nuestro controlador, procedemos a crear nuestro modelo, copiamos y guardamos el siguiente código en la carpeta de models/ con el nombre de model.agenda.php.

Código PHP:
<?php
/*Access from index.php: */
if(!defined("_access")) {
    die(
"Error: You don't have permission to access here...");
}

class 
Agenda_Model extends ZP_Model {
    
    private 
$table;
    private 
$primaryKey;
    
    public function 
__construct() {
        
$this->Db $this->db();
        
        
$this->helpers();
        
        
$this->table "agenda";
    }
    
    public function 
getContact($contactID) {
        
$this->Db->table($this->table);
        
$this->Db->cache(TRUE);
        
$this->Db->encode(TRUE);
        
        
$data $this->Db->find($contactID);
        
        return 
$data;
    }
    
    public function 
getContactByEmail($email) {
        
$this->Db->table($this->table);
        
$this->Db->cache(TRUE);
        
$this->Db->encode(TRUE);
        
        
$data $this->Db->findBy("Email"$email);
        
        return 
$data;
    }
    
    public function 
getContactBySearch($search) {
        
$this->Db->table($this->table);
        
$this->Db->cache(TRUE);
        
$this->Db->encode(TRUE);
        
        
$data $this->Db->findBySQL("Name LIKE '%$search%'");
        
        return 
$data;
    }
    
    public function 
getContactByQuery() {
        
$this->Db->select("Name, Email, Phone");
        
$this->Db->from($this->table);
        
$this->Db->where(array("Name" => "Carlos Santana""Email" => "[email protected]"));
        
        
$data $this->Db->get();
        
        return 
$data;    
    }    
}
?>
El código es bastante sencillo de entender, en el constructor cargamos nuestro objeto $this->Db (ActiveRecord), cargamos todos los helpers con $this->helpers(); y por último definimos la tabla en la que vamos a trabajar con $this->table = "agenda".

En los primeros tres métodos seleccionamos nuestra tabla ($this->Db->table($this->table)), activamos el cache para esa consulta ($this->Db->cache(TRUE)) y le decimos que nos regrese los datos con un encode en utf8 ($this->Db->encode(TRUE)).

El primer método getContact($contactID), utiliza el método del ActiveRecord $this->Db->find($contactID), el cual únicamente se le necesita pasar el ID del registro que queremos buscar, nos retornará una matriz en caso de haber encontrado el registro o en caso contrario nos retornará un FALSE.

El siguiente método getContactByEmail($email), utiliza el método del ActiveRecord $this->Db->findBy("Email", $email), el cúal le pasas el campo por el que quieres buscar y después el valor con el que lo quieres comparar, nos retornará una matriz en caso de haber encontrado uno o varios registros o en caso contrario nos retornará un FALSE.

El método getContactBySearch($search), utiliza el método del ActiveRecord $this->Db->findBySQL("Name LIKE '%$search%'"), el cúal le pasas una consulta WHERE libre, nos retornará una matriz en caso de haber encontrado uno o varios registros o en caso contrario nos retornará un FALSE.

Por último el método getContactByQuery(), utiliza distintos métodos del ActiveRecord, es una forma alternativa de hacer consultas, y es más parecido a realizar una consulta casi manualmente, utiliza los métodos $this->select() para seleccionar los campos que queremos usar, $this->from() para seleccionar la tabla que vamos a utilizar, y $this->Db->where() nos genera la consulta por medio de un array, cada posición concatena un AND a la consulta, y por último para obtener los resultados utilizamos $this->Db->get(), nos retornará una matriz en caso de haber encontrado uno o varios registros o en caso contrario nos retornará un FALSE.

Para probar nuestra aplicación en cada método lo hacemos de la siguientes maneras.
  • http://localhost/ZanPHP/index.php/es/agenda/getcontact/1
  • http://localhost/ZanPHP/index.php/es/agenda/getcontactbyemail/[email protected]
  • http://localhost/ZanPHP/index.php/es/agenda/getcontactbysearch/carlos
  • http://localhost/ZanPHP/index.php/es/agenda/getcontactbyquery/

Espero les haya sido de ayuda este pequeño tutorial, cualquier duda o pregunta pueden hacernosla por medio de Twitter en @ZanPHP o visitenos en nuestro sitio web www.zanphp.com, saludos.