Symfony2 FOSUserBundle de l'Utilisateur de l'entité le champ remplacer
J'ai un problème avec substitution d'une entité.
J'ai besoin de le domaine emailCanonical
à ne pas être unique.
Voici ce que j'ai fait:
Dans mon UserBundle\Resources\config\doctrine\User.orm.xml
j'ai ajouté ce qui suit attribute-overrides
de configuration, en fonction de la Doctrine2 documentation
<attribute-overrides>
<attribute-override name="emailCanonical">
<field column="email_canonical" unique="false" name="emailCanonical" />
</attribute-override>
</attribute-overrides>
Puis j'ai couru à la suite de commandes de la console
$ php app/console doctrine:migrations:diff
$ php app/console doctrine:migrations:migrate
Tout a bien fonctionné. emailCanonical
a été faite non unique.
Mais maintenant, quand j'ai besoin de générer une entité dans d'autres faisceaux de projet, j'ai une erreur étrange:
$ php app/console doctrine:generate:entities SkyModelsBundle:Category
Generating entity "Sky\Bundle\ModelsBundle\Entity\Category"
[Doctrine\ORM\Mapping\MappingException]
Invalid field override named 'emailCanonical' for class 'Sky\Bundle\UserBundle\Entity\User'.
doctrine:generate:entities [--path="..."] [--no-backup] name
Cependant, si je supprime le remplacer les paramètres de mappage xml, tout fonctionne bien.
Je ne suis pas sûr, quelle est votre question.
Voici la façon dont je l'ai résolu.. vous pouvez essayer ceci : stackoverflow.com/a/17059918/2342137
J'ai le même problème. J'ai utilisé des annotations pour remplacer le même attribut et ne savais pas il y avait un problème jusqu'à ce que j'ai essayé d'utiliser la doctrine:generate:entités. Avez-vous jamais trouver une solution?
Voici la façon dont je l'ai résolu.. vous pouvez essayer ceci : stackoverflow.com/a/17059918/2342137
J'ai le même problème. J'ai utilisé des annotations pour remplacer le même attribut et ne savais pas il y avait un problème jusqu'à ce que j'ai essayé d'utiliser la doctrine:generate:entités. Avez-vous jamais trouver une solution?
OriginalL'auteur SideWinder | 2013-03-21
Vous devez vous connecter pour publier un commentaire.
Vous remplacer à l'aide de PHP annotations comme si (Ce qui est pris en charge à partir de la doctrine de la version 2.3 et au-dessus, veuillez noter que dans la documentation il est dit que vous ne pouvez pas remplacer types , cependant, j'ai été en mesure de le faire à l'aide de la dernière version de la doctrine , au moment de la rédaction, il est 2.4.4):
Cela est spécifié dans la documentation: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html#overrides
OriginalL'auteur Bitclaw
Citation de officiel la documentation, donc peut-être c'est le seul moyen.
Il disent aussi "une Autre solution peut être par le biais de la doctrine d'attributs et de relations avec les remplacements"
Pas si vrai depuis le mois de juin /2013.. vous pouvez remplacer uniquement les mappages et toujours hériter de BaseUser. Comme je l'ai Aperçu ici: stackoverflow.com/questions/22718628/...
Vous pouvez en modifiant le chargé de métadonnées: blog.lavoie.sl/2015/01/symfony-override-doctrine-mapping.html
Hack sympa @sebastien. La Doctrine a déjà une réponse à cette question docs.doctrine-project.org/projects/doctrine-orm/en/latest/...
OriginalL'auteur Alexey B.
Je crois que le
name
attribut de lafield
balise n'est pas nécessaire, puisqu'elle est déjà spécifié pour leattribute-override
tagEssayer cette
OriginalL'auteur Adam Elsodaney
Il semble que FOSUserBundle entités ne sont pas correctement importés dans votre projet.
Assurez-vous que FOSUserBundle est présent dans les "mappings" ("doctrine" de la branche) de votre config.yml
OriginalL'auteur Pavel Murzakov
Eu le même bug tout à l'heure, et je l'ai résolu. La Doctrine met cette Mappingexception dans ClassMetadataInfo quand il ne le trouve pas liés à la propriété (attribut ou relation) dans sa cartographie.
Afin de remplacer "emailCanonical" attribut, vous devez utiliser l'attribut "-remplace" et "attribut override" (comme vous l'avez fait), et de redéfinir la classe php de la propriété dans votre entité :
@EDIT : l'utilisation de cette solution me cause un autre bug.
Il a résolu l'une sur le "champ non Valide remplacer nommé...", mais j'ai eu une autre avec "Double définition de la colonne..." lorsque vous essayez de valider le schéma avec
php app/console doctrine:schema:validate
commande.Une idée ?
Je n'ai pas trouvé d'autre solution que l'a expliqué ci-dessus :/ je suis toujours à la recherche d'un "nettoyage" de solution pour ces bugs
OriginalL'auteur vince
Votre classe qui extends BaseUser devrait ressembler à ceci:
OriginalL'auteur Yassine EL MALKI
Je sais que c'est un vieux post, mais j'ai trouvé une solution, au moins, il a travaillé pour moi, il serait peut-être utile pour quelqu'un d'autre.
Bien, j'ai eu le même problème et je suis en utilisant un custom manager pour la fos_user, dans la déclaration de fichier de config.yml en vertu de la doctrine entity_manager personnalisé manager, j'ai déclaré que la mise en correspondance FOS_userBundle, MAIS ce qui manquait, c'est-à-dire FOS_user que nous utilisons un autre gestionnaire et c'est en ajoutant :
fos_user:
---- db_driver: orm
---- model_manager_name: MyCustom_Manager
OriginalL'auteur Nafaa Azaiez