Encomenda
:ItemsEncomenda
:Neste exemplo, a tabela items_encomenda
serve como uma tabela pivot para as tabelas produtos
e encomendas
. Os campos produto_id
e encomenda_id
são chaves estrangeiras que referenciam os IDs das tabelas produtos
e encomendas
, estabelecendo assim a relação muitos-para-muitos. A coluna quantidade
poderia representar a quantidade de um determinado produto na encomenda.
É crucial criar as tabelas mestre antes das tabelas que fazem uso de chaves estrangeiras. Deve ter em mente que os ficheiros de migração são criados e ordenados pela data de criação, sendo executados seguindo essa ordem. Portanto, não é possível estabelecer relações entre campos de tabelas que ainda não foram criadas. Esta ordem de execução é fundamental para garantir a integridade referencial e o correto funcionamento do sistema.
Vejamos mais um exemplo:
posts
A linha $table->foreign('user_id')->references('id')->on('users')->onDelete('set null');
nas migrações de Laravel define uma chave estrangeira para o campo user_id
que faz referência ao campo id
da tabela users
e estabelece uma regra específica para o que acontece quando o registo relacionado na tabela users
é eliminado.
$table->foreign('user_id')
:
user_id
.user_id
existam na coluna id
da tabela relacionada (users
), criando assim um relacionamento entre a tabela atual e a tabela users
.references('id')
:
user_id
faz referência ao campo id
da tabela relacionada.user_id
deve corresponder a um valor existente na coluna id
da tabela users
.on('users')
:
user_id
faz referência à tabela users
.id
que é referenciada.onDelete('set null')
:
users
for eliminado.set null
indica que, se um utilizador for eliminado da tabela users
, o campo user_id
nos registos relacionados será atualizado para null.posts
), mas não precisamos manter a referência ao utilizador eliminado.