Doctrine\ODM\MongoDB\Tools\DocumentGenerator::generateAssociationMappingPropertyDocBlock PHP Method

generateAssociationMappingPropertyDocBlock() private method

private generateAssociationMappingPropertyDocBlock ( array $fieldMapping )
$fieldMapping array
    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);
    }