/** * @return TaxonomyMetadata */ protected function getMetadata() { if (null === $this->metadata) { $this->metadata = $this->service->getMetadata(); } return $this->metadata; }
/** * * Loads the appropriate entity object given the entity-type and identifier in an EntityTerm object. * * @param LifecycleEventArgs $eventArgs */ public function postLoad(LifecycleEventArgs $eventArgs) { $entityTerm = $eventArgs->getEntity(); if ($entityTerm instanceof EntityTerm) { $metadata = $this->service->getMetadata()->getEntityMetadata($entityTerm->getEntityType()); $entity = $eventArgs->getEntityManager()->find($metadata->getReflectionClass()->getName(), $entityTerm->getEntityIdentifier()); if ($entity) { $entityTerm->setEntity($entity); } } }
public function prePersist(LifecycleEventArgs $eventArgs) { $entity = $eventArgs->getEntity(); if (!$entity instanceof EntityTerm) { return; } $relEntity = $entity->getEntity(); $metadata = $this->service->getMetadata()->getEntityMetadata($relEntity); $id = $metadata->extractIdentifier($relEntity); $entity->setEntityIdentifier($id); $entity->setEntityType($metadata->getType()); }
public function preRemove(LifecycleEventArgs $eventArgs) { $entity = $eventArgs->getEntity(); if (!$this->service->getMetadata()->hasEntityMetadata($entity)) { return; } $metadata = $this->service->getMetadata()->getEntityMetadata($entity); $type = $metadata->getType(); $id = $metadata->extractIdentifier($entity); $dql = $eventArgs->getEntityManager()->createQueryBuilder()->delete('ALTaxonomyBundle:EntityTerm', 'et')->andWhere('et.entityType = :type')->andWhere('et.entityIdentifier = :id')->setParameters(array('type' => $type, 'id' => $id)); $dql->getQuery()->execute(); }