Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, to com uma dificuldade em criar uma lógica pra minha apliação.
Tenho 3 tabelas establishments, menus e establishment_menu (que faz o relacionamento entre as duas primeiras)
O que eu queria é, quando fosse é: ao fazer um insert na tabela establishments, automaticamente um insert na tabela menus e logo em seguida na tabela establishment_menu usando seus respectivos ids.
Sei que com triggers eu consigo fazer isso, mas queria usar os eventos que o Laravel tem, mas ainda não encontrei a forma correta de pegar o último id de cada tabela pra criar um insert no relacionamento.
Espero ter sido claro..
Aqui abaixo tem as tabelas que estou usando.
// establishments
+--------------+----------------------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------------------------------+------+-----+-------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| display_name | varchar(255) | NO | | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | |
| updated_at | timestamp | NO | | CURRENT_TIMESTAMP | |
+--------------+----------------------------------+------+-----+-------------------+----------------+
// menus
+-------------+------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+-------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(40) | NO | | Main | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | |
| updated_at | timestamp | NO | | CURRENT_TIMESTAMP | |
+-------------+------------------+------+-----+-------------------+----------------+
// establishment_menu
+------------------+------------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+-------------------+-------+
| establishment_id | int(10) unsigned | NO | MUL | NULL | |
| menu_id | int(10) unsigned | NO | MUL | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | |
| updated_at | timestamp | NO | | CURRENT_TIMESTAMP | |
+------------------+------------------+------+-----+-------------------+-------+
Esqueci de mencionar que no Eloquent, você não precisa se preocupar com a geração de IDs, tendo em vista que quando você salva os objetos Menu ou Estabelecimento, ele já grava nessa tabela intermediária. Se falei alguma besteira, alguém me corrija. =)
Se estiver usando Eloquent, acredito que você precise uma tabela de muitos para muitos com um pivot, ou definindo uma tabela intermediária.
Na documentação: https://laravel.com/docs/5.4/eloquent-relationships#many-to-many
Procure com ctrl+F na parte "Retrieving Intermediate Table Columns" ou "Defining Custom Intermediate Table Models".
Acredito que isso pode te ajudar.