Relacionamentos

[Finalizado Pelo Aluno]

pedro castr Criador 15/10/2019
pedro castr

Boa tarde Professor,

Estou com uma dúvida quanto aos relacionamentos. Temos uma tabela products (id, category_id, ...) e uma tabela categories (id, title, ...) que foram relacionadas com hasMany() e hasOne().

A relação no PRODUCT MODEL não devia ser necessariamente $this->belongsTo(Category::class), devido a existência de chave estrangeira na tabela products, ou não é uma regra? Caso não seja regra, perco alguma relação o usar o eloquent?

Minha segunda dúvida é quando aos relacionamentos das tabelas Orders e Products onde ambos foram relacionados como belongsToMany() através da tabela Sales. Não deveria ser Order{hasMany(Product)} e Product{belongsToMany(Order)}?

 
Criador pedro castr 16/10/2019
pedro castr

Consultando a documentação eu compreendi o conceito quando se usa belongsToMany, mas a primeira questão ainda é uma dúvida. 

Manager Carlos Ferreira 16/10/2019
Carlos Ferreira

Olá, Pedro!
Tudo bem?

Sim como o relacionamento entre Category 1:N Product no model Product deve ficar:
public function category()
{
    return $this->belongsTo(Category::class);
}

E no model Category deve ficar:
public function products()
{
    return $this->hasMany(Product::class);
}


No seu caso está gerando algum erro? Se sim me passa mais detalhes do erro e do código.

No aguardo.

Criador pedro castr 17/10/2019
pedro castr

Bom dia, não gera nenhum erro.

A única coisa que notei foi a necessidade de passar chave e chave estrangeira (ao usar hasOne() no lugar de belongsTo()), caso tenha mais de um model que se relacione com Category da mesma forma pois da erro no View Composer quando faz a consulta.

hasOne(Category::class, 'id', 'category_id');

Por isso a dúvida...

Mas já está esclarecido, obrigado Professor!

 

Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!