Sonata Media Bundle缺少实体类别

时间:2016-07-25 13:12:49

标签: symfony sonata symfony-cmf sonata-media-bundle

我尝试按照本指南将Sonata Media Bundle安装到Symfony CMF中:https://sonata-project.org/bundles/media/3-x/doc/reference/installation.html。这个命令

php app/console sonata:easy-extends:generate --dest=src SonataMediaBundle

使用一些实体创建一个全新的包ApplicationSonataMediaBundle

  • GalleryHasMedia
  • 媒体

但是当我想进入下一步时,我得到了实体类别不存在的错误:

app/console doctrine:schema:update --force

这是完整的错误:

[Doctrine\ORM\Mapping\MappingException]                                                                                                  
  The target-entity Application\Sonata\ClassificationBundle\Entity\Category cannot be found in 'Application\Sonata\MediaBundle\Entity\Med  
  ia#category'.

有人可以帮我解决这个问题吗?

提前致谢。

更新

# sonata_classification.yml:

sonata_classification:
    # ...

doctrine:
    orm:
        entity_managers:
            default:
                #metadata_cache_driver: apc
                #query_cache_driver: apc
                #result_cache_driver: apc
                mappings:
                    #ApplicationSonataClassificationBundle: ~
                    SonataClassificationBundle: ~

4 个答案:

答案 0 :(得分:6)

我必须设置此配置选项才能使其正常工作:

sonata_media:
    class:
        media: Application\MediaBundle\Entity\Media
        gallery: Application\MediaBundle\Entity\Gallery
        gallery_has_media: Application\MediaBundle\Entity\GalleryHasMedia
    # ...

还有:

doctrine_phpcr:
    # ...

    odm:
        auto_mapping: true
        mappings:
            SonataMediaBundle:
                prefix: Sonata\MediaBundle\PHPCR
            ApplicationSonataMediaBundle:
                prefix: Application\Sonata\MediaBundle\PHPCR

答案 1 :(得分:1)

您似乎只需创建sonata_classification.yml

中所述的the classification docs文件

答案 2 :(得分:1)

我在安装新闻包(带来分类和媒体包)之后遇到了同样的问题。我在新闻之前配置了媒体和分类,并收到了与OP相同的错误。在查看代码后,我注意到媒体包允许为类别指定另一个类。这为我停止了错误。

sonata_media:
    class:
        # my own bundle namespaces for media and classification bundles
        media: Application\Sonata\MediaBundle\Entity\Media
        gallery: Application\Sonata\MediaBundle\Entity\Gallery
        gallery_has_media: Application\Sonata\MediaBundle\Entity\GalleryHasMedia
        category: Application\Sonata\ClassificationBundle\Entity\Category

答案 3 :(得分:-1)

我解决了这个问题所以:

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new Application\Sonata\ClassificationBundle\ApplicationSonataClassificationBundle(),
        // ...
    );
}

php bin/console doctrine:schema:update --force