Clases/Objetos de Conexion Directa a tablas
De CidesaWiki
Symfony contiene una herramienta que agiliza la comunicación con la base de datos; esta es llamada [Propel], la misma genera clases en distintos lenguajes para manejar las diferentes tablas de la base de dados, en esta artículo analziaremos como trabaja y como nos puede ayudar:
Configurando/Ejecución Propel
Propel dentro de symfony trabaja con la información que contiene el archivo schema.yml, en el cual se coloca la información o estrucura de las tablas de la base de datos que queremos generar. El archivo schema.yml contiene información como la siguiente:
--- propel: _attributes: { noXsd: false, defaultIdMethod: none, package: lib.model } carecpro: codpro: type: VARCHAR size: 10 required: true codrec: type: VARCHAR size: 10 required: true fecent: type: DATE fecven: type: DATE id: type: INTEGER required: true autoIncrement: true
La estrucura del archivo .yml es llamada [YAML], y es la forma como el propel de symfony obtiene los parámetros de ejecución y generación de las clases. En el ejemplo anterior se definió una tabla llamada carecpro, que contiene los campos codpro, codrec, fecent, fecven y id, el cual le dirá a propel como crear la clase de comunicación con la tabla.
Luego de tener debidamente configurado el archivo .yml, se procede hacer el llamado de la función propel de symfony por consola:
NOTA: debes estar en el directorio raiz del proyecto.
# symfony propel-build-model
Esta función te indicará el nombre de la clase resultante y los archivos que fueron creado.
Clases y Archivos Generados
Luego de ejecutar la herramienta Propel, la misma genera los siguientes archivos/clases:
--lib ----model ------map (carpeta) --------CarecproMapBuilder.php ------om (carpeta) --------BaseCarecpro.php --------BaseCarecproPeer.php ------Carecpro.php ------CarecproPeer.php
- CarecproMapBuilder.php: Este archivo contiene la información necesaria para generar la tabla de forma dinámica en la base de datos. No es muy relevante para nuestro proyecto.
- BaseCarecpro.php: Este archivo es la clase base de la clase Carecpro.php. Este archivo contiene el codigo de conexion con la tabla de la base de datos. Este archivo no debe ser modificado ya que es generado automáticamente por el propel. Esta clase no puede ser instanciada (no se pueden generar objetos)
- BaseCarecproPeer.php: Este archivo es la clase base de la clase CarecproPeer.php, la cual contiene las funciones estáticas de comunicación con la tabla de la base de datos y la funciones generales de la tabla. Esta clase no puede ser instanciada (no se pueden generar objetos)
- Carecpro.php: Esta clase genera los objetos de datos con la tabla. Cada objeto de esta clase es equivalente a un registro de la tabla. De manera que mediante estos objetos podemos insertar, modificar o eliminar registros de la tabla sin necesidad de generar ninguna instrucción SQL. Esta clase puede ser modificada sin ningún problema. Propel genera esta clase para que le sean agregadas funciones por el usuario sin chocar con la estructura base de coneccion que contiene la clase BaseCarecpro.php
- CarecproPeer.php: Esta es igual a la clase BaseCarecproPeer.php (ya que hereda de ésta) pero aquí el usuario puede colocar sus funciones adicionales.
En conclusión la clases BaseCarecproPeer.php y BaseCarecpro.php son las que debe ser usadas y modificadas por el usuario, las demás son generadas por Propel y contiene el núcleo del código de conexión.
Funcionamiento de las clases generadas por Propel
Todas las clases generadas por propel funcionan de la siguiente forma:
- Funciones get: Los valores de los campos de cada registro pueden ser obtenidos con las funciones "get", por ejemplo para obtener el valor en el objeto del campo debemos llamar a la función getCarreg