Jump to content
allenprado

Relacionamento Associação N x N - PHP Orientado a Objeto

Recommended Posts

Boa Noite

Estou com dificuldades para fazer uma associação n x n, em php, procurei mas so encontrei exemplos n x 1 ou vice e versa.

Tenho um codigo que fiz, como aprendi no java mas não está funcionando.

 

Alguém pode me ajudar?

<?php
class Aluno{
    
}
class Professor{
    
}
class matricula{
    
    private Professor $professor;
    private Aluno $aluno;
    public Professor getProfessor(){
        return $this -> professor;
    }
    public Professor setProfessor($tmp_professor){
        return $this -> professor;
    }
    public Aluno getAluno(){
        $this -> aluno;
    }
    public Aluno setAluno($tmp_aluno){
        $this -> aluno = $tmp_aluno;
    }
}

 

Edited by Gabriel Heming
adicionar marcação de código

Share this post


Link to post
Share on other sites

brodi tendi nada hahahaha dá uma pesquisa aí por php conexão mysqli ou php conexão pdo

  • -1 3

Share this post


Link to post
Share on other sites

Aqui tem alguns exemplos práticos de todo tipo de associação, a que você quer acho que é a 5.9, o site tá em inglês mas acho que dá pra entender a lógica, dá uma olhada ae

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html

  • +1 2

Share this post


Link to post
Share on other sites

Você esta cometendo alguns erros de sintaxe do php, e principalmente, mesmo se fosse em java ou qualquer outra linguagem, não é correto querer representar o modelo relacional do banco em suas classes.

Reitero a sugestão do Sergio, Apesar do doctrine ser um framework, os exemplos são totalmente validos
 

Share this post


Link to post
Share on other sites
14 horas atrás, allenprado disse:

Estou com dificuldades para fazer uma associação n x n, em php, procurei mas so encontrei exemplos n x 1 ou vice e versa.

Para você entender como seus objetos podem se relacionar de forma n..n, pesquise por DIP ou seja Inversão de Dependencia. 


 

13 horas atrás, marsolim disse:

brodi tendi nada hahahaha dá uma pesquisa aí por php conexão mysqli ou php conexão pdo

Amigo @marsolim você tem que parar de floodar posts, senão as pessoas acham que o post já foi respondido e nem chega a ver. Se desconhece o assunto, simplesmente ignore ou estude um pouco mais para saber como ajudar. :thumbsup:

  • +1 3

Share this post


Link to post
Share on other sites

amigo williams duarte eu só respondo quando acho que com um pouco mais de informação ou com alguns codigos mais eu posso entender melhor e tentar ajudar. isso não é flood, flood é quando posta várias coisas em sequencia no mesmo tópico e eu so posto uma vez fazendo alguma pergunta tanto que tu podes verificar que não respondo em muitos tópico só quando acho que com um pouco mais de informação eu posso tentar ajudar e outra que quase todo tópico que eu respondo sempre tem mais gente tentando ajudar então acho que pelo menos nos que tento ajudar o pessoal não acha que pode passar pra outro nao:tounge_wink:

mas de qualquer jeito agradeço sei que tá tentando ajudar a manter o forum limpo

Share this post


Link to post
Share on other sites

Vamos focar no post por favor pessoal....

 

@allenprado

Tem bastante coisa que pode complicar mesmo na transição de alguma linguagem Java/C#/C++ para o php...

 

Montei alguns exemplos... 

 

Exemplo o método da classe mesmo...

public function setNome($nome)
{
	$this->nome = $nome;
}

 

Vi você tentando forçar um tipo  de classe logo na declaração do atributo

 

Uma maneira no php seria:

public function setProfessor(Professor $professor)
{
	$this->professor = $professor;
}

Isso garante que a entrada do método setProfessor seja uma instancia da classe Professor...

 

Outro erro bastante comum em quem está migrando/aprendendo o php é o método construtor, ex:

<?php
class Aluno extends Pessoa
{
    private $nome;
    
    
    /* ERRADO	
    public function function Aluno($nome)
    {
        $this->nome = $nome;
    }
    */
    
    //php way:
    public function __construct($nome)
    {
        $this->nome = $nome;
    }
  
}
$aluno = new Aluno('Gabriel');

 

 

Da uma lida geral:

http://php.net/manual/pt_BR/language.oop5.php

 

Antes de pensar em resolver problemas de n+1 em Objetos

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.