112 votes

"La classe XXX n'est pas une entité valide ou une super classe mappée" après avoir déplacé la classe dans le système de fichiers.

J'avais une classe d'entité dans Aib \PlatformBundle\Entity\User.php

Je n'ai eu aucun problème à créer sa classe de formulaire par l'intermédiaire de

php app/ console doctrine:generate:form AibPlatformBundle:User

J'ai maintenant changé l'espace de noms en Aib \PlatformBundle\Entity\Identity\User mais lorsque j'essaie de générer le formulaire avec la tâche que j'ai indiquée précédemment il dit :

"Classe Aib \PlatformBundle\Entity\User n'est pas une entité valide mappée".

Il s'agit du contenu du fichier :

<?php
namespace Aib\PlatformBundle\Entity\Identity;

use Doctrine\ORM\Mapping as ORM;

    /**
     * Aib\PlatformBundle\Entity\Identity\User
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="Aib\PlatformBundle\Entity\Identity
    \UserRepository")
     */
    class User
    {
    ...

Une idée ?

symfony2.0.4

1voto

Susei Points 941

Mon erreur était que je faisais

$em->getRepository(EntityRepository::class)

au lieu de

$em->getRepository(Entity::class)

0voto

jhchnc Points 380

Dans mon cas, j'ai été trop zélé lors d'une refonte et j'ai supprimé un fichier yml de doctrine !

0voto

rashidkhan Points 415

Dans mon cas, sur mon Mac, j'utilisais src/MainBundle/Resource/Config/Doctrine, bien sûr cela fonctionnait sur Mac mais pas sur le serveur Ubuntu de production. Une fois que j'ai renommé Config en config et Doctrine en doctrine, les fichiers de mapping ont été trouvés et cela a commencé à fonctionner.

0voto

Noor Ha Points 1

Dans mon cas, après avoir fait make:entity, j'ai essayé la commande suivante

php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity qui génère l'entité à partir de la base de données Cependant, cette commande ne fournit pas les getters et setters qui vous causeront une erreur de méthode inconnue (getId par exemple) si vous l'utilisez à l'intérieur d'un contrôleur ou si vous l'utilisez plus tard J'ai donc décidé de revenir à l'entité générée depuis la base de données.

php bin/console make:entity

J'ai donc pu rétablir les méthodes manquantes mais malheureusement cela m'a causé l'erreur class is not a valid entity or mapped superclass. Je n'ai pas eu la patience de lire la documentation pour savoir comment éviter cette erreur.

[1] : https://www.doctrine-project.org/projects/doctrine-orm/en/2.11/tutorials/override-field-association-mappings-in-subclasses.html#override-field-association-mappings-in-subclasses En particulier, j'utilise les attributs à la place des annotations, J'ai donc ramené l'entité générée et j'ai simplement ajouté la commande suivante qui génère des getters et des setters $ php bin/console make:entity --regenerate App je n'ai pas compris pourquoi, dans le premier cas, il m'a causé l'erreur de ce sujet.

-2voto

mediafreakch Points 559

Je me suis débarrassé du même message d'erreur que dans votre cas en utilisant app/console_dev au lieu de app/console uniquement

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X