/** * {@inheritdoc} */ public function setTagGroups(ISystemTag $tag, $groupIds) { // delete relationships first $this->connection->beginTransaction(); try { $query = $this->connection->getQueryBuilder(); $query->delete(self::TAG_GROUP_TABLE)->where($query->expr()->eq('systemtagid', $query->createNamedParameter($tag->getId())))->execute(); // add each group id $query = $this->connection->getQueryBuilder(); $query->insert(self::TAG_GROUP_TABLE)->values(['systemtagid' => $query->createNamedParameter($tag->getId()), 'gid' => $query->createParameter('gid')]); foreach ($groupIds as $groupId) { $query->setParameter('gid', $groupId); $query->execute(); } $this->connection->commit(); } catch (\Exception $e) { $this->connection->rollback(); throw $e; } }