Os relacionamentos entre os models estão normais

Em empresa, tenho:

        var $hasMany = array("Contato");

        var $belongsTo = array('Areaempresa',

                        'Representante' => array('className' => 'Empresa',
                        'foreignKey' => 'representante_empresa_id',
                        'conditions' => '',
                        'fields' => '',
                        'order' => '',
                        'counterCache' => ''),

                        'Vendedor' => array('className' => 'Contato',
                        'foreignKey' => 'vendedor_contato_id',
                        'conditions' => '',
                        'fields' => '',
                        'order' => '',
                        'counterCache' => ''));

e em contato:

        var $belongsTo = array("Empresa","Funcaocontato","Canalcontato",
"Departamento", "Funcaointerna", "Idioma");

        var $hasMany = array("Followup");


Abraço,

Rodrigo


On 7/20/07, Tulio Faria <[EMAIL PROTECTED]> wrote:
>
>
> Cara,
>
> é meio dificil e precoce dizer que é um bug...
>
> Eu já fiz algo parecido e nao tive problemas...
>
> Como está o relacionamento entre os seus models?
>
> Abraços,
>
> On 20 jul, 12:01, "Rodrigo Xavier" <[EMAIL PROTECTED]> wrote:
> > coloquei o debug como define('DEBUG', 3); para me retornar mais
> informações.
> >
> > Descori que o cake faz um select principal para Empresas e para cada
> empresa
> > retornada ele faz um novo select para os Contatos, o problema esta
> > justamente aqui. As conditions valem somente para o primeiro select ou
> seja,
> > para Empresas. Quando coloco a condition  referente a Contatos, que só
> > aparecerá em outro select, ocorre o erro.
> >
> > Isso é um bug?
> >
> > To usando o metodo query para me trazer a informação de maneira correta.
> >
> > Abraço a todos.
> >
> > rod
> >
> > On 7/20/07, Rodrigo Xavier <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> >
> >
> > > Tulio, eu acertei as conditions conforme vc indicou, mas o problema é
> que
> > > a query montada pelo cake não traz o join com a tabela de contatos
> como traz
> > > normalmente (imgino eu) quando o findall é feito sem conditions
> relacionada
> > > a contato.
> >
> > > Veja abaixo:      Não existe nada anormal a principio. Acho que pode
> ser
> > > um bug conforme o Gustavo disse.
> >
> > >     class EmpresasController extends AppController
> > >     {
> > >         var $name = "Empresas";
> > >         var $uses = array("Empresa","Contato");
> > >         function index()
> > >         {
> > >             if(isset($this->data))
> > >             {
> > >                 if($this->data['Contato']['nome'] != '')
> > >                     $conditions = array("Contato.nome
> "=>$this->data['Contato']['nome']);
> >
> > >             }
> > >             else
> > >             {
> > >                 $data7 =
> > > date("Y-m-d",mktime(0,0,0,date('m'),date('d')-7,date('Y')));
> > >                 $conditions = "Empresa.created > '".$data7."
> 00:00:00'";
> > >             }
> > >             $this->set("dados", $this->Empresa->findAll($conditions,
> array
> > > (), null, null, null, 2));
> > >         }
> > >     }
> >
> > >     Talvez a solução seja colocar diretamente a query, sei que o cake
> tem
> > > uma função dessas quando todas as opções acabam. Preferia não usar...
> > > mas.....
> >
> > > Abraço,
> >
> > > rod
> >
> > > On 7/20/07, Tulio Faria <[EMAIL PROTECTED]> wrote:
> >
> > > > Opa,
> >
> > > > seguinte, toma cuidado com as queries. Se você quer mais de uma
> > > > condição:
> >
> > > > $conditions = array("`Model1`.campo"=>valor,
> > > > "`Model2`.campo2"=>valor2);
> >
> > > > e assim por diante...
> >
> > > > Espero ter ajudado...
> >
> > > > On 19 jul, 14:26, "Rodrigo Xavier" <[EMAIL PROTECTED]> wrote:
> > > > > Prezados,
> >
> > > > > Estou tentando fazer a seguinte busca: $this->set("dados",
> > > > > $this->Empresa->findAll($conditions, array (), null, null, null,
> 2));
> > > > Sendo
> > > > > $conditions , paramentros que trago de um input.
> >
> > > > > Quando não uso conditions os dados me retornam o seguinte:
> >
> > > > > Array
> > > > > (
> > > > > [0] => Array
> > > > > (
> > > > >     [Empresa] => Array
> > > > >         (
> > > > >             [id] => 87
> > > > >             [razao] => minha empresa
> > > > >         )
> >
> > > > >     [Contato] => Array
> > > > >         (
> > > > >             [0] => Array
> > > > >                 (
> > > > >                     [id] => 122
> > > > >                     [nome] => fulano
> > > > >                     [Empresa] => Array
> > > > >                         (
> > > > >                             [id] => 87
> > > > >                             [razao] => minha empresa
> > > > >                         )
> > > > >                 )
> >
> > > > >             [1] => Array
> > > > >                 (
> > > > >                     [id] => 123
> > > > >                     [nome] => beltrano
> > > > >                     [Empresa] => Array
> > > > >                         (
> > > > >                             [id] => 87
> > > > >                             [razao] => minha empresa
> > > > >                         )
> > > > >                 )
> > > > >         )
> > > > > )
> >
> > > > > }
> >
> > > > > Porém quando coloco algo tipo:
> >
> > > > > $conditions = "1=1";
> > > > > if($this->data['Contato']['nome'] != '')
> > > > >     $conditions .= " and Contato.nome like
> > > > > '%".$this->data['Contato']['nome']."%'";
> >
> > > > > e mando executar o $this->set("dados",
> > > > $this->Empresa->findAll($conditions,
> > > > > array (), null, null, null, 2)); ele da o seguinte erro:
> > > > > 1109: Unknown table 'Contato' in where clause
> >
> > > > > Pergunto: Como pode dar erro de Unknown table se quando não não
> tinha
> > > > a
> > > > > condition ele trazia o contato?
> > > > > O correto seria o cake me retornar a mesma resposta (o array com
> as
> > > > > empresas), porém delimitada pelo condition. certo?
> >
> > > > > Sds,
> > > > > Rod
> >
> > > --
> > > Rodrigo Guimarães
> > > Desenvolvedor Web
> >
> > --
> > Rodrigo Guimarães
> > Desenvolvedor Web
>
>
> >
>


-- 
Rodrigo Guimarães
Desenvolvedor Web

--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Cake PHP Português" dos 
Grupos do Google.
 Para enviar mensagens para este grupo, envie um email para 
[email protected]
 Para anular a inscrição neste grupo, envie um email para [EMAIL PROTECTED]
 Para mais opções, visite este grupo em 
http://groups.google.com/group/cake-php-pt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

Responder a