[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
pedro castr
Criador pedro castr 15/10/2019

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 15/10/2019

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

pedro castr
Manager Carlos Ferreira 15/10/2019

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.

Carlos Ferreira
Criador pedro castr 15/10/2019

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!

 

pedro castr
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!