protected function evaluateOverridesAnnotations(array $classAnnotations, ORM\ClassMetadataInfo $metadata)
{
if (isset($classAnnotations[ORM\AssociationOverrides::class])) {
$associationOverridesAnnotation = $classAnnotations[ORM\AssociationOverrides::class];
foreach ($associationOverridesAnnotation->value as $associationOverride) {
$override = [];
$fieldName = $associationOverride->name;
// Check for JoinColumn/JoinColumns annotations
if ($associationOverride->joinColumns) {
$joinColumns = [];
foreach ($associationOverride->joinColumns as $joinColumn) {
$joinColumns[] = $this->joinColumnToArray($joinColumn);
}
$override['joinColumns'] = $joinColumns;
}
// Check for JoinTable annotations
if ($associationOverride->joinTable) {
$joinTable = null;
$joinTableAnnotation = $associationOverride->joinTable;
$joinTable = ['name' => $joinTableAnnotation->name, 'schema' => $joinTableAnnotation->schema];
foreach ($joinTableAnnotation->joinColumns as $joinColumn) {
$joinTable['joinColumns'][] = $this->joinColumnToArray($joinColumn);
}
foreach ($joinTableAnnotation->inverseJoinColumns as $joinColumn) {
$joinTable['inverseJoinColumns'][] = $this->joinColumnToArray($joinColumn);
}
$override['joinTable'] = $joinTable;
}
$metadata->setAssociationOverride($fieldName, $override);
}
}
// Evaluate AttributeOverrides annotation
if (isset($classAnnotations[ORM\AttributeOverrides::class])) {
$attributeOverridesAnnotation = $classAnnotations[ORM\AttributeOverrides::class];
foreach ($attributeOverridesAnnotation->value as $attributeOverrideAnnotation) {
$attributeOverride = $this->addColumnToMappingArray($attributeOverrideAnnotation->column, [], $attributeOverrideAnnotation->name);
$metadata->setAttributeOverride($attributeOverrideAnnotation->name, $attributeOverride);
}
}
}