![]() |
|
The symfony CookbookCómo utilizar Propel 1.3 |
|
You are currently reading "The symfony Cookbook" which is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.

|
This work is licensed under a
Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Translation of this work into another language is explicitly allowed. |
por Carl Vondrick
Empezando con Symfony 1.1, ahora es posible utilizar fácilmente Propel 1.3 en tu proyecto para aprovechar la ventaja de sus mejoras en cuanto a velocidad, implementación de conjuntos anidados (o estructuras arbóreas, del inglés nested set), piscina de instancias de objetos (pooling), entre otros. Lo más importante es que Propel 1.3 utiliza PDO (del inglés PHP Data Objects) en lugar de Creole como DBAL (Capa de Abstracción de Base de Datos), ofreciendo una significante mejora de rendimiento.
Instalar Propel 1.3 solo toma unos pocos minutos. Todo lo que debes hacer es instalar un plugin y modificar dos ficheros de configuración. Continúa leyendo para saber cómo.
Instalar el plugin Propel 1.3 del repositorio de Symfony:
$ cd /path/to/project/root/
$ svn co http://svn.symfony-project.com/plugins/sfPropelPlugin/branches/1.3/ plugins/sfPropelPlugin
Propel 1.3 utiliza un nuevo formato de conexión y por tanto debes actualizar databases.yml. Cambia config/databases.yml de la siguiente forma, haciendo los cambios que se ajusten a tu necesidad:
dev:
propel:
param:
classname: DebugPDO
all:
propel:
class: sfPropelDatabase
param:
dsn: mysql:dbname=mibasededatos;host=localhost
username: usuario
password: contraseña
encoding: utf8
persistent: true
pooling: false
classname: PropelPDO
Para actualizar tu DSN (del inglés datasource name), véase el manual PDO.
Se debe actualizar propel.ini para que coincida con la misma configuración. Busca las 3 primeras líneas de config/propel.ini y bórralas:
propel.database = mysql propel.database.createUrl = mysql://root@localhost/ propel.database.url = mysql://root@localhost/miproyecto
En su lugar, inserta las siguientes líneas:
propel.database = mysql propel.database.driver = mysql propel.database.createUrl = mysql://localhost/ propel.database.url = mysql:dbname=mibasededatos;host=localhost propel.database.user = usuario propel.database.password = contraseña propel.database.encoding = utf8
Verifica que propel.database.url coincida con el DSN del paso 2.
Limpia la caché interna de Symfony:
$ symfony cache:clear
Propel 1.3 tiene un modelo de objeto mejorado, por tanto es necesario reconstruir los modelos:
$ symfony propel:build-model
Si se trata de un nuevo proyecto, ¡felicidades porque acabas de configurar Propel 1.3! La sintaxis de schema.yml es exactamente la misma que en Propel 1.2. El nuevo API (del inglés Application Programming Interface) no es radicalmente diferente; de hecho, en su mayoría el API es exactamente el mismo.
Si estás actualizando un proyecto, es posible que te quede un poco de trabajo por delante, pero debes encontrar que la mayor parte de tu proyecto funcionará. Si utilizas transacciones o Creole directamente en tu código, tendrás que atualizarlo a PDO manualmente. El proyecto Propel tiene una útil guía de actualización que te guía a traves del proceso de actualización. Aún si se trata de un nuevo proyecto, puede que encuentres útil echarle un vistazo para aprender todas las nuevas características (o funcionalidades, del inglés features).
Symfony 1.1 desacopla su sistema núcleo, así que no podría ser más fácil utilizar cualquier capa ORM (mapeo objeto-relacional, del inglés, Object Relational Mapping) que desees. Si Propel no satisface tus necesidades, prueba sfDoctrinePlugin, que es una alternativa a Propel e iguala el rendimiento de Propel 1.3 (ya que igualmente utiliza PDO). Gracias a Symfony 1.1, los desarrolladores pueden disfrutar Propel 1.3 para mejoramiento del rendimiento o Propel 1.2 si requieren una estabilidad sólida como roca.
If you find a typo or an error, please register and open a ticket.
If you need support or have a technical question, please post to the official user mailing-list.