Anda tidak akan melihat apa pun di Films_Genres
tabel sampai Anda secara eksplisit memasukkan sesuatu ke dalamnya. Integritas referensial melalui PK dan FK bukan untuk mengisi tabel Anda untuk Anda.
Kode MySql Anda untuk memasukkan catatan baru di Films_Genres
, jika itu adalah film baru yang sesuai dengan genre baru, mungkin terlihat seperti
INSERT INTO Films (Title) VALUES ('Title1');
SET @film_id = LAST_INSERT_ID();
INSERT INTO Genres (Name) VALUES ('Genre1');
SET @genre_id = LAST_INSERT_ID();
INSERT INTO Films_Genres (film_id, genre_id) VALUES(@film_id, @genre_id);
Di sisi php untuk mendapatkan id yang baru ditetapkan untuk bidang yang bertambah secara otomatis, gunakan $mysqli->insert_id
.
Sekarang jika Anda ingin membuat film baru dan menetapkannya ke beberapa genre sekaligus, Anda dapat melakukannya
INSERT INTO Films (Title) VALUES ('Title2');
SET @film_id = LAST_INSERT_ID();
-- if you get ids of genre from your UI just use them
INSERT INTO Films_Genres (film_id, genre_id)
SELECT @film_id, id
FROM Genres
WHERE id IN (2, 3, 4);
INSERT INTO Films (Title) VALUES ('Title3');
SET @film_id = LAST_INSERT_ID();
-- if you names of genres you can use them too
INSERT INTO Films_Genres (film_id, genre_id)
SELECT @film_id, id
FROM Genres
WHERE Name IN ('Genre2', 'Genre4');
Ini SQLFiddle demo