/** * * @param Treatment $treatment * @return \HealthCareAbroad\TermBundle\Entity\Term */ private function createTermFromTreatment(Treatment $treatment) { // check first if this term already exists $term = $this->termRepository->findOneByName($treatment->getName()); if (!$term) { // term does not exist $term = new Term(); $term->setName($treatment->getName()); } // create new term document $termDocument = new TermDocument(); $termDocument->setDocumentId($treatment->getId()); $termDocument->setTerm($term); $termDocument->setType(TermDocument::TYPE_TREATMENT); $term->setInternal(true); $term->addTermDocument($termDocument); return $term; }
/** * Get the internal Term of a Treatment * * @param Treatment $treatment * @return Term */ public function getTreatmentInternalTerm(Treatment $treatment) { $qb = $this->doctrine->getManager()->createQueryBuilder(); $qb->select('t, td')->from('TermBundle:Term', 't')->innerJoin('t.termDocuments', 'td')->where('td.documentId = :treatmentId')->setParameter('treatmentId', $treatment->getId())->andWhere('td.type = :documentType')->setParameter('documentType', TermDocument::TYPE_TREATMENT)->andWhere('t.name = :treatmentName')->setParameter('treatmentName', $treatment->getName())->andWhere('t.internal = 1'); $term = $qb->getQuery()->getOneOrNullResult(); return $term; }