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
CREATE TABLE IF NOT EXISTS `zan_agenda` ( `ID_Contact` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT, `Name` VARCHAR(50) NOT NULL, `Email` VARCHAR(50) NOT NULL, `Phone` VARCHAR(15) NOT NULL, PRIMARY KEY (`ID_Contact`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3; INSERT INTO `zan_agenda` (`ID_Contact`, `Name`, `Email`, `Phone`) VALUES
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);
}
}
?>
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;
}
}
?>
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.