/** * @param Question $question * @param bool $saveTagsInEntity */ public function addForQuestion(Question $question, $saveTagsInEntity = true) { $em = $this->getEntityManager(); if ($question instanceof PollPetition) { $tags = HashTagParser::parseHashTags($question->getPetitionBody()); } else { $tags = HashTagParser::parseHashTags($question->getSubject()); } foreach ($tags['parsed'] as $tag) { $entity = $this->findOneByName($tag); if (!$entity) { $entity = new HashTag($tag); $em->persist($entity); } $entity->addQuestion($question); $em->flush($entity); } if ($saveTagsInEntity) { $question->setCachedHashTags($tags['original']); $em->flush($question); } }