ApiPlatform\SchemaGenerator\AnnotationGenerator\DoctrineMongoDBAnnotationGenerator::generateFieldAnnotations PHP Method

generateFieldAnnotations() public method

public generateFieldAnnotations ( $className, $fieldName )
    public function generateFieldAnnotations($className, $fieldName)
    {
        $this->classes[$className];
        $field = $this->classes[$className]['fields'][$fieldName];
        $annotations = [];
        if ($field['isEnum']) {
            if ($field['isArray']) {
                $type = 'simple_array';
            } else {
                $type = 'string';
            }
        } else {
            switch ($field['range']) {
                case 'Boolean':
                    $type = 'boolean';
                    break;
                case 'Date':
                    // No break
                // No break
                case 'DateTime':
                    $type = 'date';
                    break;
                case 'Time':
                    $type = 'time';
                    break;
                case 'Number':
                    // No break
                // No break
                case 'Float':
                    $type = 'float';
                    break;
                case 'Integer':
                    $type = 'integer';
                    break;
                case 'Text':
                    // No break
                // No break
                case 'URL':
                    $type = 'string';
                    break;
            }
        }
        if (isset($type)) {
            if (!$field['isId']) {
                $annotation = '@MongoDB\\Field';
                if ($field['isArray']) {
                    $type = 'collection';
                }
                $annotation .= sprintf('(type="%s")', $type);
                $annotations[] = $annotation;
            }
        } else {
            if ($field['cardinality'] === CardinalitiesExtractor::CARDINALITY_0_1 || $field['cardinality'] === CardinalitiesExtractor::CARDINALITY_1_1 || $field['cardinality'] === CardinalitiesExtractor::CARDINALITY_N_0 || $field['cardinality'] === CardinalitiesExtractor::CARDINALITY_N_1) {
                $annotations[] = sprintf('@MongoDB\\ReferenceOne(targetDocument="%s", simple=true))', $this->getRelationName($field['range']));
            } elseif ($field['cardinality'] === CardinalitiesExtractor::CARDINALITY_0_N || $field['cardinality'] === CardinalitiesExtractor::CARDINALITY_1_N || $field['cardinality'] === CardinalitiesExtractor::CARDINALITY_N_N) {
                $annotations[] = sprintf('@MongoDB\\ReferenceMany(targetDocument="%s", simple=true)', $this->getRelationName($field['range']));
            }
        }
        if ($field['isId']) {
            $annotations[] = '@MongoDB\\Id';
        }
        return $annotations;
    }