private function generateAssociationMappingPropertyDocBlock(array $fieldMapping)
{
$lines = array();
$lines[] = $this->spaces . '/**';
$lines[] = $this->spaces . ' * @var ' . (isset($fieldMapping['targetDocument']) ? $fieldMapping['targetDocument'] : 'object');
if ($this->generateAnnotations) {
$lines[] = $this->spaces . ' *';
$type = null;
switch ($fieldMapping['association']) {
case ClassMetadataInfo::EMBED_ONE:
$type = 'EmbedOne';
break;
case ClassMetadataInfo::EMBED_MANY:
$type = 'EmbedMany';
break;
case ClassMetadataInfo::REFERENCE_ONE:
$type = 'ReferenceOne';
break;
case ClassMetadataInfo::REFERENCE_MANY:
$type = 'ReferenceMany';
break;
}
$typeOptions = array();
if (isset($fieldMapping['targetDocument'])) {
$typeOptions[] = 'targetDocument="' . $fieldMapping['targetDocument'] . '"';
}
if (isset($fieldMapping['cascade']) && $fieldMapping['cascade']) {
$cascades = array();
if ($fieldMapping['isCascadePersist']) {
$cascades[] = '"persist"';
}
if ($fieldMapping['isCascadeRemove']) {
$cascades[] = '"remove"';
}
if ($fieldMapping['isCascadeDetach']) {
$cascades[] = '"detach"';
}
if ($fieldMapping['isCascadeMerge']) {
$cascades[] = '"merge"';
}
if ($fieldMapping['isCascadeRefresh']) {
$cascades[] = '"refresh"';
}
$typeOptions[] = 'cascade={' . implode(',', $cascades) . '}';
}
$lines[] = $this->spaces . ' * @ODM\\' . $type . '(' . implode(', ', $typeOptions) . ')';
}
$lines[] = $this->spaces . ' */';
return implode("\n", $lines);
}