domingo, 26 de fevereiro de 2012

Conectar a duas Bases de Dados Symfony (BUG)

Bom, pessoal passado certo tempo sem publicar nada ( muito trabalho ), peço desculpa a todos que visitam meu blog, mas esta postagem tenho certeza que é de muita valia a todos que utilizam o symfony 1.4, no 2.0, não verifiquei se este bug também existe.
Esta postagem é para o bom funcionamento do post: Conectar a duas Bases de Dados Symfony;
Quado se utiliza de métodos de manipulação de dados normais das classes geradas pelo symfony tudo funciona corretamente exemplo:   $obj->save(); irá salvar em sua base especificada no schema.yml.
O Bug acontece quando acessamos o Doctrine diretamente, desse modo ele não acessa as nossas configurações symfony (ex:databases..yml) e acaba utilizando a conexão atual.
Exemplo de médoto Doctrine:

$lg = Doctrine::getTable('Logradouro')
->createQuery()
                        ->addWhere('cep = ?', '85501030')
                        ->fetchOne();


Para correção disto vá até o arquivo: lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php

e altere o seguinte método para esta forma:


public static function modelsAutoload($className)
    {
        if (class_exists($className, false) || interface_exists($className, false)) {
            return false;
        }
        //LINHA ADICIONADA AO MÉDOTO PADRÃO
        sfAutoload::getInstance()->autoload($className);

.
.
.


Bom pessoal é isso ae!!!

Abraço a todos.
Lembrando que para qualquer dúvida favor enviar no email: fabriciokerber@gmail.com