Skip to content

Commit

Permalink
Skip unmapped fields when generating proxies
Browse files Browse the repository at this point in the history
  • Loading branch information
franmomu authored and alcaeus committed Mar 22, 2023
1 parent a1cfe9a commit f6cc0c1
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions lib/Doctrine/ODM/MongoDB/Proxy/Factory/StaticProxyFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@
use Doctrine\Persistence\NotifyPropertyChanged;
use ProxyManager\Factory\LazyLoadingGhostFactory;
use ProxyManager\Proxy\GhostObjectInterface;
use ReflectionClass;
use ReflectionProperty;

use function array_filter;
use function array_merge;
use function count;

/**
Expand Down Expand Up @@ -130,6 +132,19 @@ private function createInitializer(
* @return array<int, string>
*/
private function skippedFieldsFqns(ClassMetadata $metadata): array
{
$skippedIdFieldsFqns = $this->getIdFieldsFqns($metadata);
$skippedNonMappedFieldsFqns = $this->getUnmappedPropertyFqns($metadata);

return array_merge($skippedIdFieldsFqns, $skippedNonMappedFieldsFqns);
}

/**
* @param ClassMetadata<object> $metadata
*
* @return array<int, string>
*/
private function getIdFieldsFqns(ClassMetadata $metadata): array
{
$idFieldFqcns = [];

Expand All @@ -140,6 +155,30 @@ private function skippedFieldsFqns(ClassMetadata $metadata): array
return $idFieldFqcns;
}

/**
* @param ClassMetadata<object> $metadata
*
* @return array<int, string>
*/
private function getUnmappedPropertyFqns(ClassMetadata $metadata): array
{
$nonMappedFieldFqcns = [];

$reflectionClass = new ReflectionClass($metadata->getName());

foreach ($reflectionClass->getProperties() as $property) {
$propertyName = $property->getName();

if ($metadata->hasField($propertyName)) {
continue;
}

$nonMappedFieldFqcns[] = $this->propertyFqcn($property);
}

return $nonMappedFieldFqcns;
}

private function propertyFqcn(ReflectionProperty $property): string
{
if ($property->isPrivate()) {
Expand Down

0 comments on commit f6cc0c1

Please sign in to comment.