Yii Framework Forum: CGridVIew para exibir dados de tabela relacionada - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

CGridVIew para exibir dados de tabela relacionada Rate Topic: -----

#1 User is offline   Hudell 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 15-March 11

Posted 31 March 2011 - 02:29 PM

Boa tarde, povo.
To com um problema aqui me incomodando desde de manhã:

Primeiro, as tabelas que estou usando (o banco de dados é esse e eu não posso modificar):

Tabela "Dados":
- ID_Dado (PK)
- Colunas diversas

Tabela "Agenda":
- ID_Agenda (PK)
- Colunas diversas

Tabela "Revisao":
- ID_Revisao (PK)
- Colunas diversas

Tabela "Versao": não possui primary key
- ID_Dado
- ID_Agenda
- ID_Revisao


O que preciso fazer:
Dentro do form de edição da tabela Dados, preciso exibir um grid com os dados da tabela Agendas que são relacionados com o registro atual.

Eu tentei várias coisas aqui, mas não consegui nada que funcionasse. Não consegui criar relacionamentos na tabela "Versao" porque ela não tem PrimaryKey. O Yii procurava o valor da PK automaticamente e, não achando PK, acabava dando erro.

Alguém tem alguma ideia de como eu poderia implementar isso?
0

#2 User is offline   Athos 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 90
  • Joined: 07-January 11

Posted 12 April 2011 - 07:33 AM

E porque não tem PK?

Se é uma tabela para fazer o relacionamento NxN, faça os 3 campos como chave composta.

Não avaliei se isso é a solução do seu problema, mas a chave composta é o desenho padrão de uma tabela de relacionamento.
Thanks Google Translator to helping me write the posts :)
0

#3 User is offline   Diego Bezerra 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 12-April 11

Posted 12 April 2011 - 08:36 AM

ei pessoal aguem tem o manual para downlaod em portugues
0

#4 User is offline   Hudell 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 15-March 11

Posted 13 April 2011 - 07:52 AM

View PostAthos, on 12 April 2011 - 07:33 AM, said:

E porque não tem PK?

Se é uma tabela para fazer o relacionamento NxN, faça os 3 campos como chave composta.

Não avaliei se isso é a solução do seu problema, mas a chave composta é o desenho padrão de uma tabela de relacionamento.

O banco de dados é projetado e criado pelo cliente, eu estou apenas produzindo o código como um terceiro. O banco é esse e tenho que aceitar.

De qualquer forma, consegui resolver o problema: Ao invés de usar o modelo, fiz um select no banco, carreguei os dados para um array e usei um CArrayDataProvider.
0

#5 User is offline   Darlecio Almeida 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 02-May 11
  • Location:C. do Coité - BA

Posted 08 August 2013 - 07:03 AM

View PostHudell, on 31 March 2011 - 02:29 PM, said:

Boa tarde, povo.
To com um problema aqui me incomodando desde de manhã:

Primeiro, as tabelas que estou usando (o banco de dados é esse e eu não posso modificar):

Tabela "Dados":
- ID_Dado (PK)
- Colunas diversas

Tabela "Agenda":
- ID_Agenda (PK)
- Colunas diversas

Tabela "Revisao":
- ID_Revisao (PK)
- Colunas diversas

Tabela "Versao": não possui primary key
- ID_Dado
- ID_Agenda
- ID_Revisao


O que preciso fazer:
Dentro do form de edição da tabela Dados, preciso exibir um grid com os dados da tabela Agendas que são relacionados com o registro atual.

Eu tentei várias coisas aqui, mas não consegui nada que funcionasse. Não consegui criar relacionamentos na tabela "Versao" porque ela não tem PrimaryKey. O Yii procurava o valor da PK automaticamente e, não achando PK, acabava dando erro.

Alguém tem alguma ideia de como eu poderia implementar isso?




Ola,
Você pode fazer uma relação no model(Dados) tipo:
'REL_Agenda'=>array(self::MANY_MANY, 'Agenda',
                'Versao(ID_Dado, ID_Agenda,ID_Revisao)'),

Lembrando onde tem 'Versao(ID_Dado, ID_Agenda,ID_Revisao)'). é o nome da sua tabela e não o nome do model Versao.

se não funcionar você deve adicionar o PK na tabela versao.

no _form pode fazer o teste:

$agendas = $model->REL_Agenda;

foreach($agendas as $agenda) {
	echo 'codigo_agenda:'.$agenda->id.'<br/>';
	echo 'Nome_Agenda:'.$agenda->Nome.'<br/>';
	echo '<hr />';
	
}


sei que o post é antigo , mas pode ser útil para outras pessoas.

Abraço,

Darlecio Almeida
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users