Skip to content

Commit f84444d

Browse files
committed
Fixed loaded empty reference many fields
1 parent 9ef833c commit f84444d

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

src/DataMapper/Redis/ModelManager.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Fedot\DataMapper\Redis;
44

5-
use function Amp\all;
65
use Amp\Deferred;
76
use Amp\Redis\Client;
87
use AsyncInterop\Loop;
@@ -14,6 +13,7 @@
1413
use Fedot\DataMapper\ModelManagerInterface;
1514
use Metadata\MetadataFactory;
1615
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
16+
use function Amp\all;
1717
use function Amp\wrap;
1818

1919
class ModelManager implements ModelManagerInterface
@@ -158,6 +158,11 @@ public function find(string $class, string $id, int $depthLevel = 1, IdentityMap
158158
$propertyMetadata->setValue($modelInstance, $referenceModels);
159159
}
160160
}
161+
} elseif (
162+
!array_key_exists($propertyMetadata->name, $modelData)
163+
&& $propertyMetadata->referenceType === 'many'
164+
) {
165+
$propertyMetadata->setValue($modelInstance, []);
161166
}
162167
}
163168
}

tests/DataMapper/Redis/RedisImplementationIntegrationTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,11 @@ public function testBooks()
185185
$this->assertTrue($found, 'Not found genres');
186186
}
187187

188+
/** @var Genre $loadedGenre3 */
189+
$loadedGenre3 = wait($modelManager->find(Genre::class, 'genre-id3'));
190+
$this->assertSame([], $loadedGenre3->getBooks());
191+
$this->assertSame([], $loadedGenre3->getAuthors());
192+
188193
$loadedBook4 = wait($modelManager->find(Book::class, 'book-id4', 1, $identityMap));
189194
$this->assertSame($book4, $loadedBook4);
190195

0 commit comments

Comments
 (0)