Diferencia entre revisiones de «ActiveRecord»

De KumbiaPHP Framework Wiki
(Página creada con 'Es la principal clase para la administración y funcionamiento de modelos. ActiveRecord es una implementación de este patrón de programación y esta muy influenciada por l...')
 
 
(No se muestra una edición intermedia de otro usuario)
Línea 2: Línea 2:
 
una implementación de este patrón de programación y esta muy influenciada por la
 
una implementación de este patrón de programación y esta muy influenciada por la
 
funcionalidad de su análoga en Ruby disponible en Rails. [[ActiveRecord]] proporciona la capa
 
funcionalidad de su análoga en Ruby disponible en Rails. [[ActiveRecord]] proporciona la capa
objeto-relacional que sigue rigurosamente el estándar ORM: Tablas en Clases, Campos en
+
objeto-relacional que sigue rigurosamente el estándar ORM: Tablas en Clases, Registros en Objetos, y Campos en
Atributos y Registros en Objetos. Facilita el entendimiento del código asociado a base de
+
Atributos. Facilita el entendimiento del código asociado a base de
 
datos y encapsula la lógica especifica haciéndola más fácil de usar para el programador.
 
datos y encapsula la lógica especifica haciéndola más fácil de usar para el programador.
  
 
'''''Ejemplo:'''''
 
'''''Ejemplo:'''''
<pre>
+
<source lang=php>
 
<?php
 
<?php
 
$Clientes->nit = “808111827-2”;
 
$Clientes->nit = “808111827-2”;
Línea 13: Línea 13:
 
$Clientes->save();
 
$Clientes->save();
 
?>
 
?>
</pre>
+
</source>
  
 
==Ventajas del ActiveRecord==
 
==Ventajas del ActiveRecord==
Línea 30: Línea 30:
 
'''''Ejemplo:'''''
 
'''''Ejemplo:'''''
  
<pre>
+
<source lang=php>
 
<?php
 
<?php
 
class Clientes extends ActiveRecord {
 
class Clientes extends ActiveRecord {
 
}
 
}
 
?>
 
?>
</pre>
+
</source>
  
 
==Columnas y Atributos==
 
==Columnas y Atributos==
Línea 44: Línea 44:
  
 
'''''Ejemplo:'''''
 
'''''Ejemplo:'''''
<pre>
+
<source lang=sql>
 
CREATE TABLE album (
 
CREATE TABLE album (
 
id INTEGER NOT NULL AUTO_INCREMENT,
 
id INTEGER NOT NULL AUTO_INCREMENT,
Línea 54: Línea 54:
 
PRIMARY KEY(id)
 
PRIMARY KEY(id)
 
)
 
)
</pre>
+
</source>
  
 
Podemos crear un [[ActiveRecord]] que mapee esta tabla:
 
Podemos crear un [[ActiveRecord]] que mapee esta tabla:
  
 
'''''Ejemplo:'''''
 
'''''Ejemplo:'''''
<pre>
+
<source lang=php>
 
<?php
 
<?php
 
class Album extends ActiveRecord {
 
class Album extends ActiveRecord {
 
}
 
}
 
?>
 
?>
</pre>
+
</source>
  
 
Una instancia de esta clase será un objeto con los atributos de la tabla album:
 
Una instancia de esta clase será un objeto con los atributos de la tabla album:
  
 
'''''Ejemplo:'''''
 
'''''Ejemplo:'''''
<pre>
+
<source lang=php>
 
$Album = new Album();
 
$Album = new Album();
 
$Album->id = 2;
 
$Album->id = 2;
 
$Album->nombre = “Going Under”;
 
$Album->nombre = “Going Under”;
 
$Album->save();
 
$Album->save();
</pre>
+
</source>
  
 
==Llaves Primarias y el uso de IDs==
 
==Llaves Primarias y el uso de IDs==

Revisión actual del 01:44 2 mar 2010

Es la principal clase para la administración y funcionamiento de modelos. ActiveRecord es una implementación de este patrón de programación y esta muy influenciada por la funcionalidad de su análoga en Ruby disponible en Rails. ActiveRecord proporciona la capa objeto-relacional que sigue rigurosamente el estándar ORM: Tablas en Clases, Registros en Objetos, y Campos en Atributos. Facilita el entendimiento del código asociado a base de datos y encapsula la lógica especifica haciéndola más fácil de usar para el programador.

Ejemplo:

<?php
$Clientes->nit = “808111827-2”;
$Clientes->razon_social = “EMPRESA DE TELECOMUNICACIONES ETB”
$Clientes->save();
?>

Ventajas del ActiveRecord[editar]

  • Se trabajan las entidades del Modelo más Naturalmente como objetos.
  • Las acciones como Insertar, Consultar, Actualizar, Borrar, etc. de una entidad del Modelo están encapsuladas así que se reduce el código y se hace más fácil de mantener.
  • Código más fácil de Entender y Mantener
  • Reducción del uso del SQL en un 80%, con lo que se logra un alto porcentaje de independencia del motor de base de datos.
  • Menos “detalles” más practicidad y utilidad
  • ActiveRecord protege en un gran porcentaje de ataques de SQL inyection que puedan llegar a sufrir tus aplicaciones escapando caracteres que puedan facilitar estos ataques.

Crear un Modelo en Kumbia PHP Framework[editar]

Lo primero es crear un archivo en el directorio models con el mismo nombre de la relación en la base de datos. Por ejemplo: models/clientes.php Luego creamos una clase con el nombre de la tabla extendiendo alguna de las clases para modelos.

Ejemplo:

<?php
class Clientes extends ActiveRecord {
}
?>

Columnas y Atributos[editar]

Objetos ActiveRecord corresponden a registros en una tabla de una base de datos. Los objetos poseen atributos que corresponden a los campos en estas tablas. La clase ActiveRecord automáticamente obtiene la definición de los campos de las tablas y los convierte en atributos de la clase asociada. A esto es lo que nos referíamos con mapeo objeto relacional.

Miremos la tabla Album:

Ejemplo:

CREATE TABLE album (
id INTEGER NOT NULL AUTO_INCREMENT,
nombre VARCHAR(100) NOT NULL,
fecha DATE NOT NULL,
valor DECIMAL(12,2) NOT NULL,
artista_id INTEGER NOT NULL,
estado CHAR(1),
PRIMARY KEY(id)
)

Podemos crear un ActiveRecord que mapee esta tabla:

Ejemplo:

<?php
class Album extends ActiveRecord {
}
?>

Una instancia de esta clase será un objeto con los atributos de la tabla album:

Ejemplo:

$Album = new Album();
$Album->id = 2;
$Album->nombre = “Going Under”;
$Album->save();

Llaves Primarias y el uso de IDs[editar]

En los ejemplos mostrados de Kumbia siempre se trabaja una columna llamada id como llave primaria de nuestras tablas. Tal vez, esto no siempre es práctico a su parecer, de pronto al crear la tabla clientes la columna de numero de identificación sería una excelente elección, pero en caso de cambiar este valor por otro tendría problemas con el dato que este replicado en otras relaciones (ejemplo facturas), además de esto tendría que validar otras cosas relacionadas con su naturaleza. Kumbia propone el uso de ids como llaves primarias con esto se automatiza muchas tareas de consulta y proporciona una forma de referirse unívocamente a un registro en especial sin depender de la naturaleza de un atributo específico. Usuarios de Rails se sentirán familiarizados con esta característica.

Esta particularidad también permite a Kumbia entender el modelo entidad relación leyendo los nombres de los atributos de las tablas. Por ejemplo en la tabla álbum del ejemplo anterior la convención nos dice que id es la llave primaria de esta tabla pero además nos dice que hay una llave foránea a la tabla artista en su campo id.