Acessando atributos relacionados usando OO. Boa Noite! Tenho uma dúvida e gostaria da ajuda de vocês. Abaixo uma estrutura fictícia somente para ilustrar uma situação. Favor abstrair questões como: um aluno pode estar em mais de uma turma ou qualquer outra questão deste tipo. curso (PK)id descricao turma (PK)id descricao (FK)curso_id aluno (PK)id nome (FK)turma_id Digamos que estou criando um grid para lis...
LN
Acessando atributos relacionados usando OO.  
Boa Noite!
Tenho uma dúvida e gostaria da ajuda de vocês.

Abaixo uma estrutura fictícia somente para ilustrar uma situação. Favor abstrair questões como: um aluno pode estar em mais de uma turma ou qualquer outra questão deste tipo.

curso
(PK)id
descricao


turma
(PK)id
descricao
(FK)curso_id


aluno
(PK)id
nome
(FK)turma_id

Digamos que estou criando um grid para listar alunos, e quando eu preciso acessar a descrição da turma do aluno eu crio um get_turma_descricao na classe model do aluno. Até aí tudo bem, mas para eu acessar também a descrição do curso, como eu faço?

Obs.: Atualmente estou usando um SQL para unir todas as tabelas, mas como faço isso usando OO? Algum exemplo?

Obrigado!

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (5)


NR

Lucas, se você criou os modelos através do Studio com os devidos relacionamentos, as funções já devem estar criadas:
 
  1. <?php
  2. //model Aluno
  3. function get_turma
  4. {
  5. // loads the associated object
  6. if (empty($this->turma))
  7. $this->turma = new Turma($this->turma_id);
  8. // returns the associated object
  9. return $this->turma;
  10. }
  11. //model Turma
  12. function get_curso
  13. {
  14. // loads the associated object
  15. if (empty($this->curso))
  16. $this->curso = new Curso($this->curso_id);
  17. // returns the associated object
  18. return $this->curso;
  19. }
  20. //no grid
  21. $turma_descricao = $this->datagrid->addQuickColumn('Turma', 'turma->descricao', 'left', 300);
  22. $curso_descricao = $this->datagrid->addQuickColumn('Curso', 'turma->curso->descricao', 'left', 300);
  23. ?>
LN

Olá Nataniel!

Criei mas não usando wizard, estou fazendo tudo manualmente, no model do aluno criei somente o get_turma e como o curso está "um nível mais acima" eu não sabia se criando um get_curso ele iria acessar os atributos da classe curso (porque o curso_id está no model de turma, então não sabia se iria acessar pelo model de aluno).
Vou testar, por enquanto muito obrigado pela dica!
LN

Boa Noite!

Testado e funcionando perfeitamente.



Obrigado mais uma vez pela dica!
CB

Pablo lançou um livro php oo fala tudo sobre esses assuntos.Recomendo. na verdade eu tenho todos. sao excelentes
CB

Pablo lançou um livro php oo fala tudo sobre esses assuntos.Recomendo. na verdade eu tenho todos. sao excelentes