getClassMetadata(); $classes = array( 'Base\OAuthBundle\Entity\AccessToken', 'Base\OAuthBundle\Entity\AuthCode', 'Base\OAuthBundle\Entity\RefreshToken' ); if (!in_array($metadata->getName(), $classes)) { return; } $namingStrategy = $eventArgs ->getEntityManager() ->getConfiguration() ->getNamingStrategy() ; $userClass = 'Base\UserBundle\Entity\User'; $OAuthUserClass = '\Base\OAuthBundle\Security\Core\User\CustomOAuthUser'; $metadata->mapManyToMany(array( 'targetEntity' => class_exists($userClass) ? $userClass : $OAuthUserClass, 'fieldName' => 'user', 'cascade' => array('persist'), 'joinTable' => array( 'name' => strtolower($namingStrategy->classToTableName($metadata->getName())) . '_user', 'joinColumns' => array( array( 'name' => $namingStrategy->joinKeyColumnName($metadata->getName()), 'referencedColumnName' => $namingStrategy->referenceColumnName(), 'onDelete' => 'CASCADE', 'onUpdate' => 'CASCADE', ), ), 'inverseJoinColumns' => array( array( 'name' => 'user_id', 'referencedColumnName' => $namingStrategy->referenceColumnName(), 'onDelete' => 'CASCADE', 'onUpdate' => 'CASCADE', ), ) ) )); } }