| Login | Tour | Inicio | Chat | Descargas | Wallpapers | Páginas recientes | FAQ | | ||
Custom Search
![]() El petróleo aarkerio Un museo mata a una exhibición viva ahuramazdah Aprovechando el tema. mandrake We have a menstrual situation here aarkerio No te muevas!! blacksoul CRIPTOGRAFÍA EN LA PRESIDENCIA DE PORFIRIO DÍAZ tonathiu “Yo no tengo que explicarle por qué no: usted debe explicarme por qué sí.” tonathiu Authors@Google: Noam Chomsky aarkerio PDF Helper aarkerio Emacs como IDE para CakePHP aarkerio Pidiendo OpenSolaris 2008.5 vendaval Sospechosismo aarkerio Sistema Infalible ordbal Calderón puede ser sujeto a juicio político, sostiene Carrancá tonathiu Jaime Maussan da por auténtico video trucado del chupacabras hecho en Blender 3D asarch La desnutrición en México aarkerio No hay justicia en el mundo aarkerio Esperando al cartero aarkerio Carta a Felipe Calderón aarkerio 2004-2007 aarkerio ![]() GNU/Linux ![]() Hacktivismo ![]() Debian ![]() NetBSD ![]() WWW ![]() Guia Linux ![]() Server Side ![]() Ofimatica ![]() Despabilando... ![]() Mundo Maya ![]() Literatura ![]() Agora ![]() Psicologia ![]() Economia ![]() Ambientalismo ![]() Desarrollo Biologia ![]() |
Server Side \ CakePHP II Active Record Este artículo ha sido consultado en 3,799 ocasiones. Active RecordActiveRecord es un patrón de diseño el cual permite crear un objeto que "envuelve" una tabla SQL, agregándole la lógica del modelo y el control de acceso. Este patrón de diseño permite unir el mundo de la programación orientada a objetos (OOP), que es un mundo intuitivo y "natural", con el mundo matemático y rígido de los datos relacionales (SQL). Usar POO y SQL dentro de una aplicación es como si un arquitecto quisiese usar dos tipos totalmente diferentes de materiales (con propiedades y pesos diferentes) en una misma estructura: la mezcla sería una gran y continua molestia al momento de diseñar los espacios, calcular los pesos y las distancias. En Cake la convención es crear la tabla en plural dentro la BD y usar el singular como nombre del modelo, es decir para la tabla 'users' el modelo es 'User', para la tabla 'dogs' el modelo es 'Dog', etcétera. Active Record permite diseñar los programas usando la OOP de una manera homogénea sin tener que pensar las tablas SQL como elementos "insertados" y fuera de la lógica del modelo. Es decir, los updates, selects y deletes son propiedades del objeto User o Dog, los cuales se manipulan a través de sus métodos. Esto es muy conveniente pues si, por ejemplo, necesitamos ordenar los registros del modelo User podemos extender nuestra clase creando el método ordenar($field). Otra aproximación para salvar la división Relacional-Objetal es usar ORM (object-relational mapping), que son archivos XML que mapean las tablas y crean objetos manipulables. Propel es un ORM para PHP5 que usa esta aproximación. Sin embargo este método es más engorroso (generalmente hay que crear los XML a mano), por ello la mayoría de los frameworks como CakePHP o Ruby on Rails usan ActiveRecord. Veamos ahora el modelo User como un ejemplo de modelo típico: <?php class User extends AppModel Entre los métodos de la clase padre Model (que es la implementación ActiveRecord de CakePHP), los más usados son: $Model->findAll(); // encuentra todos los registros $Model->find(); // encuentra un row $Model->field(); // trae sólo un campo $Model->generateList(); // esta función se usa cuando en la vista vamos a construir un formulario con un select a partir de una tabla $Model->findAllBy // función que encuentra todos los registros con el nombre del campo Por ejemplo, cuando usamos el modelo Page (de la tabla 'pages'): $Page->findAll(); Es equivalente a: SELECT * FROM pages; pero podemos alterar el comportamiento y los resultados de los métodos de Model cambiando sus atributos: $Page->findAll( Esto es: $conditions = array("id"=>"> 50"); $data = $Page->findAll($conditions, $fields, $order, $limit); Es equivalente a: SELECT id, title, body, created FROM pages WHERE id > 50 ORDER BY id DESC LIMIT 15; El atributo $conditions (que es un array relacional), puede ser más complejo: $conditions = array("Author.name" => "Bob", "or" => array( "Page.title" => "LIKE %magic%", "Page.created" => "> " . date('Y-m-d', strtotime("-2 weeks") ) ) Existe un método de la clase Model: findbySQL() que permite hacer queries SQL, pero es un método depreciado que debemos evitar, pues el objetivo es pensar más en una arquitectura de objetos "pura" y menos en tablas. El atributo $page de findAll() es muy útil para realizar la paginación de los resultados, mientras $recursive señala si la tabla tiene relaciones con otras tablas. Esto lo veremos a continuación. Nota: CakePHP supone que la llave primaria en todas las tablas es el campo "id", pero si no es asi, hay que indicarlo en el modelo con la variable $primaryKey Relaciones (Binds)
|
![]() esperado a que deje de chatear una chava para cerrar el cyber 7 hours, 41 minutes ago terminandome un tarro de chela que le cabe un caguamon :-D, ya estoy alegron :-s 10 hours, 36 minutes ago aprendiendo python 12 hours, 30 minutes ago Practicando SQL 12 hours, 35 minutes ago Por cierto, esto lo estoy escribiendo desde openSolaris 2008.5. Va de maravilla!!! 15 hours, 20 minutes ago Fue el Martes 13 de Mayo, osease ayer jejeje :D 15 hours, 20 minutes ago Que estuvimos haciendo >> 10592 lecturas Sexualidad infantil y juvenil 9321 lecturas Anticoncepción de Emergencia 8098 lecturas Rompiendo cualquier clave WEP en unos pocos minutos 7042 lecturas Sinapsis y exocitosis 6405 lecturas Mi primer CakePHP, mmmmm cakeee 5319 lecturas Evolución filética en las hepáticas 4792 lecturas BASH y Primeros Comandos 4070 lecturas CakePHP II Active Record 3799 lecturas Cómo convertirse en hacker 3666 lecturas
|
| ||
| Casarse está bien. No casarse está mejor. San Agustín. | ||
| Este trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2008 © :: Colectivo MonoNeurona.org :: | ||