Je zult niets zien in Films_Genres
tabel totdat u er expliciet iets in invoegt.Referentiële integriteit via PK en FK is niet bedoeld om uw tabellen voor u te vullen.
Uw MySql-code voor het invoegen van een nieuw record in Films_Genres
, als het een nieuwe film is die overeenkomt met een nieuw genre, zou het eruit kunnen zien als
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);
Gebruik aan de php-kant om een nieuw toegewezen id voor een automatisch verhoogd veld te krijgen $mysqli->insert_id
.
Als u nu een nieuwe film wilt maken en deze aan meerdere genres tegelijk wilt toewijzen, kunt u dat doen
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');
Hier is SQLFiddle demo