Skip to content

Commit 84b7f70

Browse files
committed
Allow ->addEmbeddedResource(ref, )
1 parent df3a628 commit 84b7f70

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/Resource.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,13 @@ public function addLink(string $reference, $definition): self
6363
return $this;
6464
}
6565

66-
public function addEmbeddedResource(string $ref, Resource |null $resource): self
66+
public function addEmbeddedResource(string $ref, object |null $resource, ?string $hydrator = null): self
6767
{
68-
$this->embedded[$ref] = $resource;
68+
if ($resource instanceof Resource || $resource === null) {
69+
$this->embedded[$ref] = $resource;
70+
} else {
71+
$this->embedded[$ref] = $this->hydratorManager->extract($resource, $hydrator);
72+
}
6973

7074
return $this;
7175
}

test/ResourceTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,21 @@ public function testNullEmbeddedResource(): void
5353
$this->assertNull($result['_embedded']['embedded']);
5454
}
5555

56+
public function testObjectEmbeddedResource(): void
57+
{
58+
$user = new User();
59+
$user->id = 1;
60+
$user->name = 'Test';
61+
$user->email = 'test@testing.net';
62+
63+
$hydratorManager = new HydratorManager();
64+
$resource1 = $hydratorManager->resource();
65+
$resource1->addEmbeddedResource('user', $user);
66+
$result = $resource1->toArray();
67+
68+
$this->assertEquals(1, $result['_embedded']['user']['id']);
69+
}
70+
5671
public function testEmbeddedResources(): void
5772
{
5873
$hydratorManager = new HydratorManager();

0 commit comments

Comments
 (0)