/** * 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]; }
/** * @testdox Entities fetched by id are turned into objects using the EntityBuilder */ public function testGetById() { $this->builder->expects($this->any())->method('castToEntity')->with([$this->articles[1]])->willReturn([(object) $this->articles[1]]); $article = $this->dataMapper->getById(1); $this->assertEquals(1, $article->id); }
/** * @param $article * * @depends testResolve * @testdox reduce() extracts the database structure from an entity */ public function testReduce($article) { $row = $this->builder->reduce($article); $this->assertEquals($this->articles[1], $row); }
/** * Resolves an alias to a class name * * @param string $alias The class alias or name * * @return string The fully qualified class name */ public function resolveAlias($alias) { return $this->builder->resolveAlias($alias); }
/** * Build a prototype (once) for the entity. * * @return void */ private function buildPrototype() { if (empty($this->prototype)) { $this->prototype = $this->builder->create($this->entityName); } }