Re: hasandbelongstomany com três tabelas

2008-02-18 Por tôpico Josenivaldo Benito Junior
Paulo,

Se eu estou certo e, eu repito, SE eu estou certo:

Você teria tres tabelas de relacionamento:

Perfil_usuario
Perfil_acao
Usuario_Acao

Cada uma conteria os campos ID chave das duas tabelas envolvidas.

No controler faça, por exemplo:

$this->Perfil->recursive=1; // ou algo maior que 1

Ao fazer uma pesquisa, por exemplo:

$var = $this->Perfil->findAll();

O array $var ter a relação Perfil_usuario e Perfil_acao trazidas e, como a
recursividade está >0, o cake retorna, também, o relacionamento Usuario_acao
para os resultados de usuario e acao.

Não estou conseguindo ser claro o suficiente, desculpe, não estou achando as
palavras certas. Mas o que quero dizer que EU ACHO que não se deve fazer um
relacionamento HABTM entre 3 tabelas ao mesmo tempo e sim um HABTM entre
cada uma das tabelas envolvidas.

Se eu estiver falando besteira é só gritar.

Abraço,
Benito.

2008/2/18 pamp_php <[EMAIL PROTECTED]>:

>
>Josenivaldo,
>
>E qual deverá ser o nome da tabela (muitos para muitos), onde
> serão gravados os IDs das 3 tabelas, para que o cake enchergue
> automaticamente a recursividade ?
>
>Exemplo:
>* Em um relacionamento muitos para muitos, envolvendo as tabelas:
>  - perfil
>  - usuario
>Terei a tabela: perfil_usuario com as seguintes colunas:
>   - perfil_id
>   - usuario_id
>
>
>Se eu precisar realcionar: PERFIL->USUARIO  PERFIL->ACAO -> ACAO-
> >PERFIL  ACAO->USUARIO USUARIO->ACAO USUARIO->PERFIL, portanto minha
> tabela seria composta por:
>- acao_id
>- perfil_id
>- usuario_id
>Qual deveria ser o nome dessa tabela ?
>
>
>No aguardo. Obrigado.
>
>
>Paulo.
>
>
>
>
>
>
> On 18 fev, 16:36, "Josenivaldo Benito Junior" <[EMAIL PROTECTED]>
> wrote:
> > Rafael,
> >
> > Acho que o conceito está errado. Um relacionamento ocorre entre duas
> tabelas
> > e não entre três. Se você precisa relacionar as 3 tabelas precisa
> definir
> > relações entre cada par de tabelas:
> >
> > Tabelas A, B e C
> >
> > Relações A->B , A->C, B->A, B->C, C->A e C->B
> >
> > Com a recursividade do cake você consegue acessar, através do
> relacionamento
> > A->B, a relação de B->C. Mas não vejo como você faria a conexão entre
> três
> > tabelas diretamente.
> >
> > Falei besteira?
> >
> > Abraço,
> > Benito
> >
> > 2008/2/18 Rafael Bueno <[EMAIL PROTECTED]>:
> >
> >
> >
> >
> >
> >
> >
> > > Boa tarde pessoal !!!, então acontece o seguinte tenho um
> > > relacionamento de muitos pra muitos  com três tabelas e estou tentando
> > > o seguinte >
> >
> > > tray_rotinas_loja.php
> > > var $hasAndBelongsToMany = array("Tray_grupo", "Tray_acao");
> >
> > > tray_acao.php
> > > var $hasAndBelongsToMany = array("Tray_rotinas_loja", "Tray_grupo");
> >
> > > tray_grupo.php
> > > var $hasAndBelongsToMany = array("Tray_acao", "Tray_rotinas_loja");
> >
> > > nome da tabela com as chaves estrangeira q faz a ligação das três
> > > tabelas é: tray_acoes_tray_grupos_tray_rotinas_lojas
> >
> > > mais quando tento dar um findAll ou save retorna
> >
> > > Warning: SQL Error: 1146: Table 'traynewpainel.tray_acoes_tray_grupos'
> > > doesn't exist
> >
> > > ñ sei pq mais o cake ñ conseguiu relacionar as três tabelas
> >
> > > valeu pessoal aguardo respostas
> >
> > --
> > Josenivaldo Benito Junior. PU2LBD
> > Organizador do Concurso Brasileiro de 144 MHZ - CB144 (em conj. com
> > PY2BRZ e  PY2HCD)http://www.gbvudx.qsl.br
> > Assine a Lista de e-mails do GBVUDX:
> http://www.gbvudx.qsl.br/refletor_gbvudx.asp- Ocultar texto entre aspas -
> >
> > - Mostrar texto entre aspas -
> >
>


-- 
Josenivaldo Benito Junior. PU2LBD
Organizador do Concurso Brasileiro de 144 MHZ - CB144 (em conj. com
PY2BRZ e  PY2HCD)
http://www.gbvudx.qsl.br
Assine a Lista de e-mails do GBVUDX:
http://www.gbvudx.qsl.br/refletor_gbvudx.asp

--~--~-~--~~~---~--~~
Você recebeu esta mensagem porque está inscrito no Grupo "Cake PHP Português" 
em Grupos do Google.
 Para postar neste grupo, envie um e-mail para cake-php-pt@googlegroups.com
 Para cancelar a sua inscrição neste grupo, envie um e-mail para [EMAIL 
PROTECTED]
 Para ver mais opções, visite este grupo em 
http://groups.google.com/group/cake-php-pt?hl=pt-BR
-~--~~~~--~~--~--~---



Re: hasandbelongstomany com três tabelas

2008-02-18 Por tôpico pamp_php

Josenivaldo,

E qual deverá ser o nome da tabela (muitos para muitos), onde
serão gravados os IDs das 3 tabelas, para que o cake enchergue
automaticamente a recursividade ?

Exemplo:
* Em um relacionamento muitos para muitos, envolvendo as tabelas:
  - perfil
  - usuario
Terei a tabela: perfil_usuario com as seguintes colunas:
   - perfil_id
   - usuario_id


Se eu precisar realcionar: PERFIL->USUARIO  PERFIL->ACAO -> ACAO-
>PERFIL  ACAO->USUARIO USUARIO->ACAO USUARIO->PERFIL, portanto minha
tabela seria composta por:
- acao_id
- perfil_id
- usuario_id
Qual deveria ser o nome dessa tabela ?


No aguardo. Obrigado.


Paulo.






On 18 fev, 16:36, "Josenivaldo Benito Junior" <[EMAIL PROTECTED]>
wrote:
> Rafael,
>
> Acho que o conceito está errado. Um relacionamento ocorre entre duas tabelas
> e não entre três. Se você precisa relacionar as 3 tabelas precisa definir
> relações entre cada par de tabelas:
>
> Tabelas A, B e C
>
> Relações A->B , A->C, B->A, B->C, C->A e C->B
>
> Com a recursividade do cake você consegue acessar, através do relacionamento
> A->B, a relação de B->C. Mas não vejo como você faria a conexão entre três
> tabelas diretamente.
>
> Falei besteira?
>
> Abraço,
> Benito
>
> 2008/2/18 Rafael Bueno <[EMAIL PROTECTED]>:
>
>
>
>
>
>
>
> > Boa tarde pessoal !!!, então acontece o seguinte tenho um
> > relacionamento de muitos pra muitos  com três tabelas e estou tentando
> > o seguinte >
>
> > tray_rotinas_loja.php
> > var $hasAndBelongsToMany = array("Tray_grupo", "Tray_acao");
>
> > tray_acao.php
> > var $hasAndBelongsToMany = array("Tray_rotinas_loja", "Tray_grupo");
>
> > tray_grupo.php
> > var $hasAndBelongsToMany = array("Tray_acao", "Tray_rotinas_loja");
>
> > nome da tabela com as chaves estrangeira q faz a ligação das três
> > tabelas é: tray_acoes_tray_grupos_tray_rotinas_lojas
>
> > mais quando tento dar um findAll ou save retorna
>
> > Warning: SQL Error: 1146: Table 'traynewpainel.tray_acoes_tray_grupos'
> > doesn't exist
>
> > ñ sei pq mais o cake ñ conseguiu relacionar as três tabelas
>
> > valeu pessoal aguardo respostas
>
> --
> Josenivaldo Benito Junior. PU2LBD
> Organizador do Concurso Brasileiro de 144 MHZ - CB144 (em conj. com
> PY2BRZ e  PY2HCD)http://www.gbvudx.qsl.br
> Assine a Lista de e-mails do 
> GBVUDX:http://www.gbvudx.qsl.br/refletor_gbvudx.asp- Ocultar texto entre 
> aspas -
>
> - Mostrar texto entre aspas -
--~--~-~--~~~---~--~~
Você recebeu esta mensagem porque está inscrito no Grupo "Cake PHP Português" 
em Grupos do Google.
 Para postar neste grupo, envie um e-mail para cake-php-pt@googlegroups.com
 Para cancelar a sua inscrição neste grupo, envie um e-mail para [EMAIL 
PROTECTED]
 Para ver mais opções, visite este grupo em 
http://groups.google.com/group/cake-php-pt?hl=pt-BR
-~--~~~~--~~--~--~---



Re: hasandbelongstomany com três tabelas

2008-02-18 Por tôpico Josenivaldo Benito Junior
Olá Rafael,

Dei uma googleada ultra rápida (não refinei muito), mas acho que o que você
quer fazer está representado aqui:

http://images.google.com.br/imgres?imgurl=http://www.ariadne.ac.uk/issue27/paschoud/Image3.gif&imgrefurl=http://www.ariadne.ac.uk/issue27/paschoud/&h=402&w=576&sz=36&hl=pt-BR&start=34&tbnid=Tr76TkX4itZ63M:&tbnh=94&tbnw=134&prev=/images%3Fq%3D3%2Bway%2Brelation%2Btable%26start%3D18%26gbv%3D2%26ndsp%3D18%26hl%3Dpt-BR%26sa%3DN

Verifique a figura: "*Figure 3: Tables, columns and relations within the RDM
database (note: not all columns are shown here)*"

Veja que a tabela Resource tem ligação HABTM com outras três tabelas, sempre
pelo Resource-ID. Para cada ligação existe uma tabela HABTM. Se as tabelas,
exemplo que estou imaginando, Keyword e Subject precisassem estar ligadas
deveria haver outra HABTM entre essas duas tabelas e, através da
recursividade do cake você conseguiria fazer buscas em Resource indicando
Keyword e Subject e o relacionamento entre essas.

Abraço,
Benito

2008/2/18 Josenivaldo Benito Junior <[EMAIL PROTECTED]>:

> Rafael,
>
> Acho que o conceito está errado. Um relacionamento ocorre entre duas
> tabelas e não entre três. Se você precisa relacionar as 3 tabelas precisa
> definir relações entre cada par de tabelas:
>
> Tabelas A, B e C
>
> Relações A->B , A->C, B->A, B->C, C->A e C->B
>
> Com a recursividade do cake você consegue acessar, através do
> relacionamento A->B, a relação de B->C. Mas não vejo como você faria a
> conexão entre três tabelas diretamente.
>
> Falei besteira?
>
> Abraço,
> Benito
>
> 2008/2/18 Rafael Bueno <[EMAIL PROTECTED]>:
>
>
> > Boa tarde pessoal !!!, então acontece o seguinte tenho um
> > relacionamento de muitos pra muitos  com três tabelas e estou tentando
> > o seguinte >
> >
> > tray_rotinas_loja.php
> > var $hasAndBelongsToMany = array("Tray_grupo", "Tray_acao");
> >
> > tray_acao.php
> > var $hasAndBelongsToMany = array("Tray_rotinas_loja", "Tray_grupo");
> >
> > tray_grupo.php
> > var $hasAndBelongsToMany = array("Tray_acao", "Tray_rotinas_loja");
> >
> > nome da tabela com as chaves estrangeira q faz a ligação das três
> > tabelas é: tray_acoes_tray_grupos_tray_rotinas_lojas
> >
> > mais quando tento dar um findAll ou save retorna
> >
> > Warning: SQL Error: 1146: Table 'traynewpainel.tray_acoes_tray_grupos'
> > doesn't exist
> >
> > ñ sei pq mais o cake ñ conseguiu relacionar as três tabelas
> >
> > valeu pessoal aguardo respostas
> >
> > > >
> >
>
>
> --
> Josenivaldo Benito Junior. PU2LBD
> Organizador do Concurso Brasileiro de 144 MHZ - CB144 (em conj. com
> PY2BRZ e  PY2HCD)
> http://www.gbvudx.qsl.br
> Assine a Lista de e-mails do GBVUDX:
> http://www.gbvudx.qsl.br/refletor_gbvudx.asp




-- 
Josenivaldo Benito Junior. PU2LBD
Organizador do Concurso Brasileiro de 144 MHZ - CB144 (em conj. com
PY2BRZ e  PY2HCD)
http://www.gbvudx.qsl.br
Assine a Lista de e-mails do GBVUDX:
http://www.gbvudx.qsl.br/refletor_gbvudx.asp

--~--~-~--~~~---~--~~
Você recebeu esta mensagem porque está inscrito no Grupo "Cake PHP Português" 
em Grupos do Google.
 Para postar neste grupo, envie um e-mail para cake-php-pt@googlegroups.com
 Para cancelar a sua inscrição neste grupo, envie um e-mail para [EMAIL 
PROTECTED]
 Para ver mais opções, visite este grupo em 
http://groups.google.com/group/cake-php-pt?hl=pt-BR
-~--~~~~--~~--~--~---



Re: hasandbelongstomany com três tabelas

2008-02-18 Por tôpico Josenivaldo Benito Junior
Rafael,

Acho que o conceito está errado. Um relacionamento ocorre entre duas tabelas
e não entre três. Se você precisa relacionar as 3 tabelas precisa definir
relações entre cada par de tabelas:

Tabelas A, B e C

Relações A->B , A->C, B->A, B->C, C->A e C->B

Com a recursividade do cake você consegue acessar, através do relacionamento
A->B, a relação de B->C. Mas não vejo como você faria a conexão entre três
tabelas diretamente.

Falei besteira?

Abraço,
Benito

2008/2/18 Rafael Bueno <[EMAIL PROTECTED]>:

>
> Boa tarde pessoal !!!, então acontece o seguinte tenho um
> relacionamento de muitos pra muitos  com três tabelas e estou tentando
> o seguinte >
>
> tray_rotinas_loja.php
> var $hasAndBelongsToMany = array("Tray_grupo", "Tray_acao");
>
> tray_acao.php
> var $hasAndBelongsToMany = array("Tray_rotinas_loja", "Tray_grupo");
>
> tray_grupo.php
> var $hasAndBelongsToMany = array("Tray_acao", "Tray_rotinas_loja");
>
> nome da tabela com as chaves estrangeira q faz a ligação das três
> tabelas é: tray_acoes_tray_grupos_tray_rotinas_lojas
>
> mais quando tento dar um findAll ou save retorna
>
> Warning: SQL Error: 1146: Table 'traynewpainel.tray_acoes_tray_grupos'
> doesn't exist
>
> ñ sei pq mais o cake ñ conseguiu relacionar as três tabelas
>
> valeu pessoal aguardo respostas
>
> >
>


-- 
Josenivaldo Benito Junior. PU2LBD
Organizador do Concurso Brasileiro de 144 MHZ - CB144 (em conj. com
PY2BRZ e  PY2HCD)
http://www.gbvudx.qsl.br
Assine a Lista de e-mails do GBVUDX:
http://www.gbvudx.qsl.br/refletor_gbvudx.asp

--~--~-~--~~~---~--~~
Você recebeu esta mensagem porque está inscrito no Grupo "Cake PHP Português" 
em Grupos do Google.
 Para postar neste grupo, envie um e-mail para cake-php-pt@googlegroups.com
 Para cancelar a sua inscrição neste grupo, envie um e-mail para [EMAIL 
PROTECTED]
 Para ver mais opções, visite este grupo em 
http://groups.google.com/group/cake-php-pt?hl=pt-BR
-~--~~~~--~~--~--~---