Caution: You are browsing the legacy symfony 1.x part of this website.

Como usar o Propel 1.3

1.2

por Carl Vondrick

Começando com o symfony 1.1, agora é possível usar facilmente o Propel 1.3 no seu projeto e aproveitar as melhorias de velocidade, implementação de modelos encadeados, pooling de instancia de objetos , entre outros. Mais importante, o Propel 1.3 usa PDO ao invés de Creole como DBAL, oferecendo um ganho significativo de performance.

Instalar o Propel 1.3 leva apenas poucos minutos. Tudo que precisa ser feito é instalar um plugin e modificar dois arquivos de configuração. Leia e aprenda como.

  • Instalar o plugin Propel 1.3 do repositório do symfony:

    $ cd /path/to/project/root/
    $ svn co http://svn.symfony-project.com/plugins/sfPropelPlugin/branches/1.3/ plugins/sfPropelPlugin
    
  • Propel 1.3 usa um novo formato de conexão, então você deve atualizar o databases.yml de acordo. Mude o config\databases.yml para casar com o seguinte, fazendo suas mudanças necessárias.

    dev:
      propel:
        param: 
          classname: DebugPDO
     
    all:
      propel:
        class: sfPropelDatabase
        param:
          dsn: mysql:dbname=mydb;host=localhost 
          username: username
          password: password
          encoding: utf8
          persistent: true
          pooling: false
          classname: PropelPDO

    Para atualizar seu DSN, veja PDO manual.

  • Devemos atualizar o propel.ini para casar com a configuração. Procure pelas 3 linhas no começo do arquivo config/propel.ini e delete elas:

    [ini
    propel.database            = mysql
    propel.database.createUrl  = mysql://[email protected]/
    propel.database.url        = mysql://[email protected]/myproject
    

    No seu lugar, coloque o seguinte:

    propel.database            = mysql
    propel.database.driver     = mysql
    propel.database.createUrl  = mysql://localhost/
    propel.database.url        = mysql:dbname=mydb;host=localhost
    propel.database.user       = username
    propel.database.password   = password
    propel.database.encoding   = utf8

    Tenha certeza de que propel.database.url está igual ao DSN do 2º passo

  • Limpe o cache interno do symfony:

    $ symfony cache:clear
    
  • O Propel 1.3 tem uma melhoria do modelo de objetos, por isso, devemos gerar novamente os modelos:

    $ symfony propel:build-model
    

Se é um novo projeto, parabéns, você acabou de configurar o Propel 1.3! A sintaxe do schema.yml é exatamente a mesma do Propel 1.2. A nova API não é radicalmente diferente; de fato, na maior parte, a API é exatamente a mesma;

Se você está atualizando um projeto, você pode ainda ter um pouco de trabalho pela frente, mas você verá que a maior parte do seu projeto vai funcionar. Se você usa transações ou Creole direto no seu código, você terá que atualizar manualmente para PDO. O projeto Propel tem um guia de atualização que guia você pelo processo de atualização. Mesmo que seja um novo projeto, você pode achar útil dar uma olhada nele para aprender sobre todas as novas funcionalidades.

O symfony 1.1 desacoplou seus sistemas internos, então não poderia ser mais fácil usar outra camada de ORM que você queira. Se o Propel não lhe agrada, de uma olhada no sfDoctrinePlugin, que é uma alternativa ao Propel que tem a mesma performance do Propel 1.3.

Graças ao symfony 1.1, os desenvolvedores podem aproveitar o Propel 1.3 para melhorar a performance ou o Propel 1.2 se eles quiserem mais estabilidade.