/**
  * Gets the identifier for an entity
  *
  * @param   object  $entity  The entity
  *
  * @return  array  The identifier as key-value pair(s)
  */
 protected function getIdentifier($entity)
 {
     $entityId = json_decode($this->entityRegistry->getEntityId($entity), true);
     if (is_array($entityId)) {
         $identifier = [];
         foreach ($entityId as $key => $value) {
             $key = strtolower(Normalise::toUnderscoreSeparated(Normalise::fromCamelCase($key)));
             $identifier[$key] = $value;
         }
         return $identifier;
     }
     $primary = $this->builder->getMeta(get_class($entity))->primary;
     return [$primary => $entityId];
 }
 /**
  * Delete a tag for a master
  *
  * The system will detect the change and delete the entry in the map.
  * The tag itself will not be affected.
  */
 public function testDeleteATagForAMaster()
 {
     $this->restoreData(['masters', 'maps', 'tags']);
     $repo = $this->repo[Master::class];
     $master = $repo->getById(1);
     $tag = $master->tags->getById(1);
     $master->tags->remove($tag);
     $this->unitOfWork->commit();
     $this->entityRegistry->clear();
     $master = $repo->getById(1);
     $tags = $master->tags->findAll()->columns('tag')->getItems();
     $this->assertEquals(['Tag 2', 'Tag 3'], $tags);
     $tagRepo = $this->repo[Tag::class];
     $tag = $tagRepo->getById(1);
     $this->assertEquals('Tag 1', $tag->tag);
 }
 /**
  * Deletes an entity from the storage
  *
  * @param   object $entity The entity to delete
  *
  * @return  void
  *
  * @throws  OrmException  if the entity could not be deleted
  */
 public function delete($entity)
 {
     $persistor = new DoctrinePersistor($this->connection, $this->table, $this->entityRegistry->getEntityBuilder(), $this->entityRegistry);
     $persistor->delete($entity);
 }
 /**
  * Cast array to entity
  *
  * @param   array $matches The records
  *
  * @return  array
  */
 private function castToEntity($matches)
 {
     $entities = $this->entityRegistry->getEntityBuilder()->castToEntity($matches, $this->entityClass);
     return $entities;
 }
 /**
  * Deletes an entity from the storage
  *
  * @param   object $entity The entity to delete
  *
  * @return  void
  *
  * @throws  OrmException  if the entity could not be deleted
  */
 public function delete($entity)
 {
     $persistor = new CsvPersistor($this->gateway, $this->table, $this->entityRegistry->getEntityBuilder(), $this->entityRegistry);
     $persistor->delete($entity);
 }