Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel-Lopes

Relacionamento de tabelas no Laravel

Recommended Posts

Bom dia pessoal, estou fazendo um curso aqui no iMasters, e até postei essa duvida la no sistema, mas postarei no forum também afim de compartilhar minhas duvidas e quem sabe conseguir alguma resposta.


Estou desenvolvendo um sistema que tem duas tabelas relacionadas entre si.

Este relacionamento é baseado numa terceira tabela, como está sendo ensinado no curso, e la tenho as seguintes tabelas:


1ª tabela: products

2ª tabela: categories

3ª tabela: category_product


O relacionamento é feito na 3ª tabela, guardando o ID da tabela products e categories, gerando assim um relacionamento entre elas.

Mas quando eu uso chave estrangeira no MYSQL eu tenho a opções onDELETE, onUPDATE, ou seja, posso usar ON DELETE CASCADE para que quando o dado relacionado for deletado, todos os dados relacionado a ele automaticamente são deletados. Mas se eu usar o relacionamento acima (usando 3 tabelas), sem chave estrangeira (FOREIGN KEY), o Laravel me fornece essa funcionalidade parecida, ou eu teria que criar uma rotina para essa tarefa ?


Qual as vantagens em usar FOREIGN KEY ou "TRÊS TABELA" para gerar relacionamentos ?


Se eu usar FOREIGN KEY, como farei para recuperar os dados das duas tabelas relacionadas usando MODELS (Eloquent)? é o mesmo procedimento que é usado para o relacionamento com 3 tabelas ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre o Laravel, não sei lhe dizer, mas deve haver as opções na hora de criar os objetos no SGBD. Nesse caso não conseguirei lhe auxiliar muito.

Qual as vantagens em usar FOREIGN KEY ou "TRÊS TABELA" para gerar relacionamentos ?

A vantagem é a integridade dos dados. A terceira tabela, conhecida como N:M, é conhecido como o "problema do banco relacional".

Sobre a questão do banco de dados, eu considero cascade on delete uma solução que gera um problema.

- A solução é apagar todos os relacionamentos;
- O problema é apagar um registro sem informar que irá excluir, em conjunto, os seus relacionamentos.

Dica: não use, mantenha a consistência que o SGBD lhe oferece. Se em dado momento for necessário excluir um registro e suas dependências, utilize um script específico para a situação, realizando o delete na ordem inversa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.