Modelo CakePhp

Siguiendo con el tema de CakePhp, ahora toca la introducción al tema de modelos,

El Modelo en el paradigma MVC, es el primer concepto con el que nos toparemos, y básicamente proveé un acceso a los datos de nuestra aplicación o sitio, estén estos en una base de datos mysql, sql server, oracle, xml, directorio ldap o cualquier otro al que php pueda conectarse. Todo lo referente a la manipulación de datos (obtención, modificación, eliminación, etc).

La primera parte será definir una conexión a nuestro origen de datos, en mi caso utilizaré mysql. todo lo que tiene que hacer es guardar el archivo database.php.default con el nombre de database.php y editarlo.

Encontrará al final del archivo la clase DATABASE_CONFIG con 2 variables: $default y $test, la primera como su nombre lo indica será la conexión predeterminada en caso no se especifique, y la segunda la que se utilizará en las pruebas unitarias (unit test) en caso las utilice. En mi caso estoy utilizando mysql y quedó así mi variable $default

var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '192.168.1.1',
'login' => 'usuarioDB',
'password' => 'miPassword',
'database' => 'MiBD_Ejemplo',
'prefix' => '',
);

Guarda su archivo y está listo para continuar. (con la utilidad bake de cake también podrá configurar este archivo, pero se verá más adelante).

Los modelos deben ser creados con la palabre clave de php “class” y deben heredar de la clase “AppModel”, que es una clase que cakephp nos brinda en el directorio cake/libs/model.php

Los modelos deben ser almacenados en la carpeta “Models” de nuestra aplicación, aunque hay 2 cosas a tener en cuenta. El nombre de la tabla debe ser escrita en plural, y El nombre nuestra clase debe ser en singular y almacenada en un archivo con el mismo nombre.

Por ejemplo, el controlador para la tabla “Actividades” debe almacenarse en el archivo models/actividad.php y el contenido del archivo sería el siguiente:

class Actividad extends AppModel {
var $name = 'Actividad';
}

Si intentara usar este modelo en CakePhp obtendría un error, ya que éste espera que los nombres de las tablas estén en inglés, pero no se preocupe, la gente de CakePhp sabía que el inglés no es el único idioma así que proveen un mecanimos para que cakephp sepa buscar la clase en base al nombre de la tabla cuando esta está en español.

Edite el archivo Config/inflections.php de la carpeta de su aplicación y agregue las siguientes líneas justo antes de ?> :

$pluralRules = array(
'/([aieou])$/i' => '\1s', # dependencia
'/(d|r|n)$/i' => '\1es', # unidad(es)
);

$singularRules = array(
'/(d|r|n)es$/i' => '\1',
'/([aeiou])s$/i' => '\1', # dependencia
);

Y ya tiene un modelo creado, aunque este en particular no valida datos, podría escribir sus reglas de validación para esta tabla, pero eso escapa de este post, pero puede leerlo en la documentación de de cakePhp.

Ahora la forma más sencilla de crear un modelo y sus validaciones respetando además el nombre y locación del archivo es usando la shell de cakephp, así que vaya a inicio /ejecutar y escriba cmd y presione enter.
muevase a la carpeta en que almacena su aplicación (en mi ejemplo c:\cakephp\miProyecto)

cd C:\cakephp\miProyecto
cake bake

cakephp_modelo1

Si no configuró su base de datos, puede seguir el asistente que le permitirá hacerlo en su proyecto cómo se muestra en la siguiente imagen

cakephp_modelo2

Una vez configurada la base de datos con el asistente debemos volver a ejecutar “Cake Bake” y nos mostrará el siguiente menú, desde el que selecionaremos la opción M (Modelo)
donde nos desplegará una opción por cada tabla que exista en nuestra base de datos, escribiremos el número asignado a nuestra tabla “actividades” que en mi caso ha sido “1″, luego nos preguntará si queremos crear las validaciones de nuestros campos, escribimos “y” y nos preguntará por cada campo qué tipo de validación queremos.
cakephp_modelo3

Entre las validaciones existentes podemos escojer que ingresen un número(numeric), que no dejen el campo vacío(notEmpty), que el valor esté entre un rango de dos valores (Between) y también crear nuestras propias validaciones.

Una vez que terminemos con las validaciones, nos preguntará si queremos agregar las relaciones de nuestras tablas, esto es para que genere el código necesario para poder integrar las búsquedas de los datos en las tablas relacionadas, por ejemplo obtener el detalle de la factura (obtener los registros hijos de la tabla).

En mi caso ha creado el siguiente modelo:

class Actividad extends AppModel {
var $name = 'Actividad';
var $validate = array(
'nombre_actividad' => array('notempty'),
'minimo_llamada' => array('numeric'),
'maximo_llamada' => array('numeric'),
'num_clientes' => array('numeric')
);
}

Ahora el siguiente paso será crear un Controlador.

Post a Comment