Ejemplo n.º 1
0
 /**
  * Gets all tags for the given taggable resource
  *
  * @param BaseTaggable $resource Taggable resource
  * @return array
  */
 public function getTagging(BaseTaggable $resource)
 {
     $em = $this->em;
     $config = $em->getConfiguration();
     if (is_null($config->getCustomHydrationMode(self::TAGGING_HYDRATOR))) {
         $config->addCustomHydrationMode(self::TAGGING_HYDRATOR, 'Doctrine\\ORM\\Internal\\Hydration\\ObjectHydrator');
     }
     return $em->createQueryBuilder()->select('t')->from($this->tagClass, 't')->innerJoin('t.tagging', 't2', Expr\Join::WITH, 't2.resourceId = :id AND t2.resourceType = :type')->setParameter('id', $resource->getTaggableId())->setParameter('type', $resource->getTaggableType())->getQuery()->getResult(self::TAGGING_HYDRATOR);
 }
 /**
  * Deletes all tagging records for the given taggable resource
  *
  * @param Taggable  $resource   Taggable resource
  */
 public function deleteTagging(Taggable $resource)
 {
     $taggingList = $this->em->createQueryBuilder()->select('t')->from($this->taggingClass, 't')->where('t.resourceType = :type')->setParameter('type', $resource->getTaggableType())->andWhere('t.resourceId = :id')->setParameter('id', $resource->getTaggableId())->getQuery()->getResult();
     foreach ($taggingList as $tagging) {
         $this->em->remove($tagging);
     }
 }
 /**
  * Sets the resource
  *
  * @param Taggable $resource Resource to set
  */
 public function setResource(Taggable $resource)
 {
     $this->resourceType = $resource->getTaggableType();
     $this->resourceId = $resource->getTaggableId();
 }