Skip to content

Instantly share code, notes, and snippets.

@lavoiesl
Created January 6, 2015 18:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lavoiesl/0ac2d841b07ea122bfd0 to your computer and use it in GitHub Desktop.
Save lavoiesl/0ac2d841b07ea122bfd0 to your computer and use it in GitHub Desktop.
Override Doctrine ODM mapping for FOSUserBundle
<?php
namespace Acme\UserBundle\EventListener;
use Doctrine\ODM\MongoDB\Event\LoadClassMetadataEventArgs;
/**
* Ran when Mongo metadata is loaded.
*/
class ClassMetadataListener
{
public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
{
$classMetadata = $eventArgs->getClassMetadata();
// Override FOS to not have unique emails
if ($classMetadata->reflClass->name == 'FOS\UserBundle\Model\User') {
foreach ($classMetadata->indexes as $i => $index) {
if (count($index['keys']) === 1 && isset($index['keys']['emailCanonical'])) {
$classMetadata->indexes[$i]['options']['unique'] = false;
break;
}
}
}
}
}
services:
acme.user.metadata_listener:
class: Acme\UserBundle\EventListener\ClassMetadataListener
tags:
- { name: doctrine_mongodb.odm.event_listener, event: loadClassMetadata }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment