Symfony2 Error: No mapping file found named

后端 未结 5 913
我在风中等你
我在风中等你 2020-12-16 21:19

I am using Symfony2 and when i try to generate the schema ($ php app/console doctrine:generate:schema) i got an error..


    [Doctrine\\ORM\\Mapping\\MappingExcep         


        
相关标签:
5条回答
  • 2020-12-16 21:44

    It is somehow strange to me that you're using PHPDriver for ORM and not AnnotationDriver, since your database info in classes is in annotations.

    Anyhow, if php app/console doctrine:mapping:info command gives you only 1 entity that means that your other bundle containing User class is not loaded in app/AppKernel.php file. Load your UserBundle by adding line

    new xxx\UserBundle\xxxUserBundle(),
    

    to the $bundles array in registerBundles() function. After that, this function should look something like this:

    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\DoctrineBundle\DoctrineBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
            new xx\FileBundle\xxFileBundle(),
            new xxx\UserBundle\xxxUserBundle(),
        );
    
        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }
    
        return $bundles;
    }
    

    Of course, change 'xx' and 'xxx' with your real names.

    Hope this helps.

    0 讨论(0)
  • 2020-12-16 21:46

    I agree with @ilanco 100%. In addition, the solution is to REMOVE any .xml file in folder, for example:

    C:\xampp\htdocs\localxyz\src\AppBundle/Resources/config/doctrine/Comment.orm.xml

    these xml files created when you run such command:

    C:\xampp\htdocs\localxyz>php app/console doctrine:mapping:import --force AppBundle xml

    Dung.

    0 讨论(0)
  • 2020-12-16 21:47

    I can't think of a reason why this is happening but I will take a leap here.

    Try editing your config.yml. doctrine section should look like this:

    doctrine:
        dbal:
            default_connection: my_connection_name
            connections:
                fmefb:
                    host:     %database_host%
                    dbname:   %database_name%
                    user:     %database_user%
                    password: %database_password%
                    driver:   %database_driver%
                    port:     %database_port%
                    charset:  UTF8
    
        orm:
            default_entity_manager: my_entity_manager
            entity_managers:
                my_entity_manager:
                    connection: my_connection_name
                    mappings:
                        CompanyNameSiteBundle: ~
                        CompanyNameAdminBundle: ~
                        CompanyNameSomethingElse: ~
    

    Notice the mappings list on the bottom. All bundles which are "linked" are included here.

    Hope this helps....

    0 讨论(0)
  • 2020-12-16 21:55

    You are mixing Doctrine mapping formats, you have annotations and at least one XML file in Resources/config/doctrine

    From the symfony docs:

    "A bundle can accept only one metadata definition format. For example,
    it's not possible to mix YAML metadata definitions with annotated PHP
    entity class definitions."
    

    So the solution is:

    You cannot mix different Doctrine mapping formats in a given bundle. So either use annotations for all entities or use XML for all.

    0 讨论(0)
  • 2020-12-16 21:57

    Good day,

    Although I know that this has been posted years ago, but will just like to post my answer here, perhaps it could help someone :)

    just simply clear the cache, it works for me though

    php bin/console cache:clear
    

    Thanks

    0 讨论(0)
提交回复
热议问题