src/Kunstmaan/GeneratorBundle/Generator/KunstmaanGenerator.php
protected function generateEntity(
        BundleInterface $bundle,
        $name,
        $fields,
        $namePrefix,
        $dbPrefix,
        $extendClass = null,
        $withRepository = false
    ) {
        // configure the bundle (needed if the bundle does not contain any Entities yet)
        $config = $this->registry->getManager(null)->getConfiguration();
        $config->setEntityNamespaces(
            array_merge(
                array($bundle->getName() => $bundle->getNamespace() . '\\Entity' . ($namePrefix ? '\\' . $namePrefix : '')),
                $config->getEntityNamespaces()
            )
        );

        $entityClass = $this->registry->getAliasNamespace($bundle->getName()) . ($namePrefix ? '\\' . $namePrefix : '') . '\\' . $name;
        $entityPath = $bundle->getPath() . '/Entity/' . ($namePrefix ? $namePrefix . '/' : '') . str_replace('\\', '/', $name) . '.php';
        if (file_exists($entityPath)) {
            throw new \RuntimeException(sprintf('Entity "%s" already exists.', $entityClass));
        }

        $class = new ClassMetadataInfo($entityClass, new UnderscoreNamingStrategy());
        if ($withRepository) {
            if ($this->isSymfony4()) {
                $repositoryClass = preg_replace('/\\\\Entity\\\\/', '\\Repository\\', $entityClass, 1) . 'Repository';
                $class->customRepositoryClassName = $repositoryClass;
                $this->getSymfony4RepositoryGenerator()->writeEntityRepositoryClass($entityClass, $repositoryClass, $bundle->getPath());
            } else {
                $entityClass = preg_replace('/\\\\Entity\\\\/', '\\Repository\\', $entityClass, 1);
                $class->customRepositoryClassName = $entityClass.'Repository';
                $path = $bundle->getPath().str_repeat('/..', substr_count(get_class($bundle), '\\'));
                $this->getRepositoryGenerator()->writeEntityRepositoryClass($class->customRepositoryClassName, $path);
            }
        }

        foreach ($fields as $fieldSet) {
            foreach ($fieldSet as $fieldArray) {
                foreach ($fieldArray as $field) {
                    if (array_key_exists('joinColumn', $field)) {
                        $class->mapManyToOne($field);
                    } elseif (array_key_exists('joinTable', $field)) {
                        $class->mapManyToMany($field);
                    } else {
                        $class->mapField($field);
                    }
                }
            }
        }
        $class->setPrimaryTable(
            array(
                'name' => strtolower($dbPrefix) . Inflector::tableize(Inflector::pluralize($name)),
            )
        );
        $entityCode = $this->getEntityGenerator($extendClass)->generateEntityClass($class);

        return array($entityCode, $entityPath);
    }
protected function generateEntity(
        BundleInterface $bundle,
        $name,
        $fields,
        $namePrefix,
        $dbPrefix,
        $extendClass = null,
        $withRepository = false
    ) {
        // configure the bundle (needed if the bundle does not contain any Entities yet)
        $config = $this->registry->getManager(null)->getConfiguration();
        $config->setEntityNamespaces(
            array_merge(
                array($bundle->getName() => $bundle->getNamespace() . '\\Entity' . ($namePrefix ? '\\' . $namePrefix : '')),
                $config->getEntityNamespaces()
            )
        );

        $entityClass = $this->registry->getAliasNamespace($bundle->getName()) . ($namePrefix ? '\\' . $namePrefix : '') . '\\' . $name;
        $entityPath = $bundle->getPath() . '/Entity/' . ($namePrefix ? $namePrefix . '/' : '') . str_replace('\\', '/', $name) . '.php';
        if (file_exists($entityPath)) {
            throw new \RuntimeException(sprintf('Entity "%s" already exists.', $entityClass));
        }

        $class = new ClassMetadataInfo($entityClass, new UnderscoreNamingStrategy());
        if ($withRepository) {
            if ($this->isSymfony4()) {
                $repositoryClass = preg_replace('/\\\\Entity\\\\/', '\\Repository\\', $entityClass, 1) . 'Repository';
                $class->customRepositoryClassName = $repositoryClass;
                $this->getSymfony4RepositoryGenerator()->writeEntityRepositoryClass($entityClass, $repositoryClass, $bundle->getPath());
            } else {
                $entityClass = preg_replace('/\\\\Entity\\\\/', '\\Repository\\', $entityClass, 1);
                $class->customRepositoryClassName = $entityClass.'Repository';
                $path = $bundle->getPath().str_repeat('/..', substr_count(get_class($bundle), '\\'));
                $this->getRepositoryGenerator()->writeEntityRepositoryClass($class->customRepositoryClassName, $path);
            }
        }

        foreach ($fields as $fieldSet) {
            foreach ($fieldSet as $fieldArray) {
                foreach ($fieldArray as $field) {
                    if (array_key_exists('joinColumn', $field)) {
                        $class->mapManyToOne($field);
                    } elseif (array_key_exists('joinTable', $field)) {
                        $class->mapManyToMany($field);
                    } else {
                        $class->mapField($field);
                    }
                }
            }
        }
        $class->setPrimaryTable(
            array(
                'name' => strtolower($dbPrefix) . Inflector::tableize(Inflector::pluralize($name)),
            )
        );
        $entityCode = $this->getEntityGenerator($extendClass)->generateEntityClass($class);

        return array($entityCode, $entityPath);
    }
protected function generateEntity ( BundleInterface $ bundle , $ name , $ fields , $ namePrefix , $ dbPrefix , $ extendClass = null , $ withRepository = false ) { // configure the bundle (needed if the bundle does not contain any Entities yet) $ config = $ this -> registry -> getManager ( null ) -> getConfiguration ( ) ; $ config -> setEntityNamespaces ( array_merge ( array ( $ bundle -> getName ( ) => $ bundle -> getNamespace ( ) . '\\Entity' . ( $ namePrefix ? '\\' . $ namePrefix : '' ) ) , $ config -> getEntityNamespaces ( ) ) ) ; $ entityClass = $ this -> registry -> getAliasNamespace ( $ bundle -> getName ( ) ) . ( $ namePrefix ? '\\' . $ namePrefix : '' ) . '\\' . $ name ; $ entityPath = $ bundle -> getPath ( ) . '/Entity/' . ( $ namePrefix ? $ namePrefix . '/' : '' ) . str_replace ( '\\' , '/' , $ name ) . '.php' ; if ( file_exists ( $ entityPath ) ) { throw new \ RuntimeException ( sprintf ( 'Entity "%s" already exists.' , $ entityClass ) ) ; } $ class = new ClassMetadataInfo ( $ entityClass , new UnderscoreNamingStrategy ( ) ) ; if ( $ withRepository ) { if ( $ this -> isSymfony4 ( ) ) { $ repositoryClass = preg_replace ( '/\\\\Entity\\\\/' , '\\Repository\\' , $ entityClass , 1 ) . 'Repository' ; $ class -> customRepositoryClassName = $ repositoryClass ; $ this -> getSymfony4RepositoryGenerator ( ) -> writeEntityRepositoryClass ( $ entityClass , $ repositoryClass , $ bundle -> getPath ( ) ) ; } else { $ entityClass = preg_replace ( '/\\\\Entity\\\\/' , '\\Repository\\' , $ entityClass , 1 ) ; $ class -> customRepositoryClassName = $ entityClass . 'Repository' ; $ path = $ bundle -> getPath ( ) . str_repeat ( '/..' , substr_count ( get_class ( $ bundle ) , '\\' ) ) ; $ this -> getRepositoryGenerator ( ) -> writeEntityRepositoryClass ( $ class -> customRepositoryClassName , $ path ) ; } } foreach ( $ fields as $ fieldSet ) { foreach ( $ fieldSet as $ fieldArray ) { foreach ( $ fieldArray as $ field ) { if ( array_key_exists ( 'joinColumn' , $ field ) ) { $ class -> mapManyToOne ( $ field ) ; } elseif ( array_key_exists ( 'joinTable' , $ field ) ) { $ class -> mapManyToMany ( $ field ) ; } else { $ class -> mapField ( $ field ) ; } } } } $ class -> setPrimaryTable ( array ( 'name' => strtolower ( $ dbPrefix ) . Inflector :: tableize ( Inflector :: pluralize ( $ name ) ) , ) ) ; $ entityCode = $ this -> getEntityGenerator ( $ extendClass ) -> generateEntityClass ( $ class ) ; return array ( $ entityCode , $ entityPath ) ; }
Generate the entity PHP code.

@param BundleInterface $bundle
@param string          $name
@param array           $fields
@param string          $namePrefix
@param string          $dbPrefix
@param string|null     $extendClass
@param bool            $withRepository

@return array

@throws \RuntimeException
Generate the entity PHP code .