banco de dados - Tabela associativa no Laravel 5.8 (Migrate) - Stack Overflow em Português
Estou fazendo um sistema para uma escola no setor automotivo que oferece cursos, esse sistema o usuário vai poder cadastrar os cursos e visualiza-los, no geral, vai ser um painel para ele controlar o que ele coloca/retira do site.
Ao longo do desenvolvimento do sistema surgiram algumas dúvidas nas migrations do Laravel, eu tentei achar em outras fontes, porém não obtive nenhum resultado comum ao meu, por incrível que pareça, a maioria começa utilizando o comando php artisan make:model nome_da_tabela -m (-m para gerar migrate), mas eu acabei fazendo o oposto disso, eu comecei pelas migrates para depois gerar todas as tabelas de uma vez.
Eu tenho 3 migrations/tabelas, mas não sei como vai ficar o resultado final da tabela associativa, digo em relação aos tipos de dados e as referências que devo colocar na tabela course_category
create_course_table
create_course_category_table
create_category_course_table
Na tabela course_category como vou inserir e identificar o id da tabela course e category_course?
Eu pensei em colocar como FK as duas da tabela category_course, porém não sei se é viável sabendo que é uma tabela de N:N
$table->foreign('id_course')->references('id')->on('course')
$table->foreign('id_category_course')->references('id')->on('category_course')
Entretanto essa forma citada acima talvez esteja bem errada trabalhando com Laravel. Não sei, não tenho como eu afirmar.
Essa pergunta talvez esteja duplicada em Migrations em Laravel 5.8 porém não foi respondida...
editada 5/07/19 às 17:51
Você precisa saber de como cria uma migration? – novic 5/07/19 às 23:17
Na verdade minha dúvida é se na migration iria a tabela associativa ou não, pelo que vi, não vai... Usa-se o comando pivot para recuperar os dados da tabela intermediária, só não entendi como vou inserir nela. – user152996 8/07/19 às 10:48
Mas precisa existir uma tabela e consequentemente uma migrate dessa tabelas, resumindo são 3 migration – novic 8/07/19 às 12:34
Mas pelo que eu entendi (me corrija se estiver errado) vai ser 2 tabelas... course e category_course que existirá na minha pasta models, e caso eu queira pegar as informações das 2 tabelas eu devo usar o comando pivot. Se não for isso, como eu farei na hora que montar minha migrate do course_category? vai ter o id da migrate, e as chaves referenciadas, eu devo usar algum comando do Laravel 5 para referenciar elas? Tipo $table->foreign('id_course')->references('id')->('id_course');? – user152996 10/07/19 às 12:02
Já tem explicação para a criação dos modelos aqui – novic 10/07/19 às 12:17
Imaginando que você já esteja passando as categorias do curso para a sua view, no seu formulário deve ter um select para essas categorias:
<select name="categories_id[]" multiple>
<option value="{$category->id}">{$category->name}</option>
Após enviar o formulário deve receber os dados dessa maneira no seu controlador:
// Sync recdebe o array com os ID's das categorias selecionadas e as insere na sua tabela intermediária