Junção de tabelas complexa HABTM

27/09/2017

1

Bom dia pessoal! Talvez (muito provavelmente) pra muitos aqui nem seja tão complexa.. mas to me batendo a alguns dias nessa questão.

Eu tenho uma tabela produtos no mysql onde ele é HABTM (has and belongs to many) a tabela cores, que por sua vez também tem a tabela de numeração (tamanhos), e a tabela fotos relacionados a esse produto. O problema é que a cor de cada sapato vai definir quais os números disponíveis naquela cor bem como carregar as fotos respectivas daquela cor. Até difícil eu conseguir explicar. Vou dar um exemplo.



Bota Firenze na cor marrom possui o tamanho 36, 37 e 38.

A mesma bota Firenze só que na cor preta possui o tamanho 40, 41 e 42.



E cada um tem que ter suas fotos respectivas. É semelhante ao site do Netshoes na parte de detalhes do produto. Mas a minha dúvida são duas.



1 - Como modelar corretamente essas tabelas? Eu fiz a tabela produtos ser HABTM cores que por sua vez é HABTM numeração e a cores é HasMany fotos porém não sei se está certo.

2 - E estou com muita dificuldade nesse formato de tabela fazer a junção deles na hr de cadastrar, pois HABTM muitos para muitos beleza, mas como associar a cor com a numeração no mesmo cadastro do produto?



Alguém pode me ajudar. Eu estou usando o Cakephp 2.x se ajudar em algo. Muito obrigado pessoal
Responder

Post mais votado

03/10/2017

Muito obrigado pela resposta Gilis. Eu pensei nisso.. porém o problema que eu tinha encontrado era fazer as condicoes na busca.. onde eu estaria no controller produto e buscaria a cor e ela trouxesse os tamanhos.. daí já mudei de ideia por causa desse problema. O que eu usei agora.. foi serializar na tabela produtos as cores com seus respectivos tamanhos.. aparentemente deu certo. Fiz assim..

A tabela cores e tamanhos não tem ligação mais com os produtos.. porém carrego elas via loadModel na hr da inserção e gero um array com as informações:
array('cor'=>#ccc, array('tamanho'=>array(23,45,34)))
por exemplo.
Antes de salvar eu serializo, e parece que deu certo.. não sei se é uma boa prática, mas até que achei elegante.
Responder

Mais Posts

02/10/2017

Venancio Alves

Olá Goof, por gentileza mande as tabelas para exemplificar melhor.


Abraço
Responder

02/10/2017

Venancio Alves

Olá Goof, como o seu relacionamento é N:N, ou seja, de muitos para muitos, a sua tabela de cores deve ter duas chaves estrangeiras (uma para o produto e a outra para o tamanho).

Exemplo: tabela_produto e a tabela_tamanho se relacionam com a tabela_cores.
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira