Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Duvida sobre relacionamento entre tabelas.

Gostaria de saber como ficaria a relação nos modelos no seguinte contexto:

3 tabelas

//////////////////////////////////////////////////

Tabela - Usuario

ID PK

nome VARCHAR p

sobrenome VARCHAR

email VARCHAR

senha VARCHAR

//////////////////////////////////////////////////

Relação entre usuário e usuário_negocio - Muitos pra um

/////////////////////////////////////////////////

Tabela - Usuario_Negocio

id PK

id_usuario FK

id_negocio FK

////////////////////////////////////////////////////////

Relação entre negocio e usuário_negocio - Muitos pra um

/////////////////////////////////////////////////////////

Tabela - Negocio

id PK

nome_negocio VARCHAR

descricao VARCHAR

endereco VARCHAR

telefone VARCHAR

////////////////////////////////////////////////////////////////////

Outra dúvida, eu teria que criar um model para a tabela Usuario_Negocio?

4 respostas

Olá, Jean.

Esse é seu caso: https://laravel.com/docs/7.x/eloquent-relationships#many-to-many

solução!

Olá Jean,

Nesse caso você só precisa de 2 models, Usuario e Negocio. E as migrations você cria seguindo exatamente a estrutura que você definiu acima para as três tabelas.

Em Usuario você teria algo como:

// No model Usuario
public function negocios()
{
    // Os parâmetros são:
    // - Nome do model relacionado,
    // - Nome da tabela que faz a união,
    // - Nome do campo com o id do model atual e
    // - Nome do campo com o id do model relacionado
    return $this->belongsToMany('App\Negocio', 'usuario_negocio', 'id_usuario', 'id_negocio');
}

E em Negocio você teria a mesma coisa , mas com o model trocado e a ordem dos campos invertidos:

// No model Negocio
public function usuarios()
{
    return $this->belongsToMany('App\Usuario', 'usuario_negocio', 'id_negocio', 'id_usuario');
}

Documentação do Laravel sobre esse tipo de relação.

Espero ter ajudado, qualquer dúvida é só falar!

Boa, Lucas. Explicação perfeita. To no celular aí dei uma resposta meio seca. rs

Foi mal, Jean, e obrigado, Lucas!

Obrigado Vinicius e Lucas pela explicação. Excelente!