. */ namespace Fisharebest\Webtrees\Module\FamilyTreeFavorites\Schema; use Fisharebest\Webtrees\Database; use Fisharebest\Webtrees\Schema\MigrationInterface; use PDOException; /** * Upgrade the database schema from version 2 to version 3. */ class Migration2 implements MigrationInterface { /** {@inheritDoc} */ public function upgrade() { // Add foreign key constraints // Delete any data that might violate the new constraints Database::exec( "DELETE FROM `##favorite`" . " WHERE user_id NOT IN (SELECT user_id FROM `##user` )" . " OR gedcom_id NOT IN (SELECT gedcom_id FROM `##gedcom`)" ); // Add the new constraints try { Database::exec( "ALTER TABLE `##favorite`" . " ADD FOREIGN KEY `##favorite_fk1` (user_id ) REFERENCES `##user` (user_id) ON DELETE CASCADE," . " ADD FOREIGN KEY `##favorite_fk2` (gedcom_id) REFERENCES `##gedcom` (gedcom_id) ON DELETE CASCADE" ); } catch (PDOException $ex) { // Already updated? } } }