ActiveRecord en KumbiaPHP

Bueno hoy vamos a ver una herramienta muy poderosa que nos proporciona kumbiaPHP framework. Se trata de ActiveRecord. ActiveRecord proporciona la capa objeto-relacional que sigue rigurosamente el estándar ORM. Que signifca esto? Pues que ahora vamos a poder tratar las tablas como clases, los registros como objetos y los campos como atributos. Esto nos brindara una muy buena y sencilla manera de trabajar con tablas despreocupandonos de las molestas sentencias que usabamos antes.

Para usar ActiveRecord es necesario crear un modelo para cada tabla como ya habiamos visto en el ejemplo anterior. Es decir que por ejemplo para la tabla clientes nuestro modelo sera un archivo llamado clientes.php dentro del directorio models y que contenga:

<?php
class Clientes extends ActiveRecord {
}
?>

Antes de pasar a ver como se usa voy a recomendarles que sigan 2 convenciones que son las sugeridas tambien en el libro.

  • Llamar Id al campo clave de tabla y colocarla como autonumerica
  • campo_id: Los campos terminados en _id indican relaciones foráneas a otras tablas, de esta forma se puede definir fácilmente las relaciones entre las entidades del modelo. Un campo llamado clientes_id en una tabla indica que existe otra tabla llamada clientes y esta contiene un campo id que es foránea a este.

CRUD: Create (Crear), Read (Leer), Update (Actualizar), Delete (Borrar)

ActiveRecord implementa automáticamente las cuatro operaciones básicas sobre una tabla: Crear, Leer, Actualizar y Borrar. Veamos ahora como usarlos:

Crear Registros

Manteniendo la idea del Objeto-Relacional podemos pensar que crear registros es lo mismo que crear objetos. Asignar valores a los atributos de un objeto y ejecutar el método create o save es lo mismo que hacer un INSERT y guardar valores en los campos.

$cliente=new clientes();

$cliente->nombre=»Eduardo»;

$cliente->apellido=»Santillan»;

$cliente->edad=»23″;

$cliente->save(); // seria igual si podemos $cliente->create();

Consultar Registros

En cuanto a la busqueda o consulta de registros existen muchos metodos y formas de hacerlo. Voy a mostrar solo un par de ejemplos. Si quieren algo mas detallado deberan consultar el libro.

$cliente=$clientes->find(85);

Lo que hace la anterior consulta es devolver en el objeto $cliente el registro cuyo id es 85. Es la forma mas basica de busqueda con activeRecord.

Para buscar segun otros campos distintos al id podemos hacer:

foreach($clientes->find(«apellido=’Santillan» and edad<24″) as $cliente){
print $cliente->nombre;
}

Con lo anterior estaremos buscando todos los registros cuyo campo apellido sea «Santillan» y cuyo campo edad sea menor a 24. Asumo que saben usar el foreach.

Actualizar Registros

Para actualizar la tarea es sencilla. Primero buscamos el registro que deseamos actualizar, luego cambiamos los valores que deseemos y por ultimo aplicamos el metodo save() o create().

$cliente=$clientes->find(369);

$cliente->edad=27;

$cliente->save();

Borrado de registros

Tampoco hay mucho que decir sobre el borrado de registros. Solo le pasamos el id que deseamos borrar.

$clientes->delete(45);

La verdad es que ahora no se como logre sobrevivir sin el ActiveRecord. Luego de probarlo me encanto porque es una manera de programar muy natural y sencilla.

perro

Ingeniero en Informática. Programador en PHP y Angular. Lo que mas adoro en el mundo es el conocimiento. Y el anime....y Japón...y el running...y bloguear claro y algunas otras cientos de cosas. Sigo buscando la manera de hacer mi primer millón.

9
Comenta!

avatar
jjmc
jjmc

Hola.
Estaba leyendo tu artículo sobre activerecord y estaba interesado en manejar los hasmany etc… y poder hacer los join entre tablas sbes donde puedo encontrar cosas de esto… Tus descargas no funciona

Gracias

xial
xial

tienes un error , donde dice actualizar pusiste save :twisted:

trackback

[…] aprender a hacer CRUD (Create, Read, Update, […]

David
David

Hola que tal amigo, buenas tardes!!!

He realizado lo que se comenta en tu blog, tengo entendido que se crea el archivo clientes.php dentro de la carpeta models,. pero mi duda es: ¿lo dejo vacio?

´También tengo entendido que en el archivo index se ponen las instrucciones para crear registros.

De antemano les doy las gracias, soy nuevo en esto y espero no desesperarlos.

efjt
efjt

que sucede con las columnas compuestas de varias palabras. ejemplo FechaAtencion o seria fecha_atencion. como asume active record