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 automaticamente 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 la 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 nungun problema. Propel genera esta clase para que le sean agregadas funciones por el usuario sin chocar con la estrucura base de conexion que contiene la clase BaseCarecpro.php
- CarecproPeer.php: Esta clase