【问题标题】:Sonata Media Bundle missing entity CategorySonata Media Bundle 缺少实体类别
【发布时间】:2016-11-28 20:30:48
【问题描述】:

我尝试按照以下指南将 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: ~

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我在安装新闻包后遇到了同样的问题(它带来了分类和媒体包)。我在新闻之前配置了媒体和分类,并收到与 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】:

      看起来您只需要按照the classification docs 中的说明创建一个sonata_classification.yml 文件

      【讨论】:

      • 感谢greg0ire,我将给定的示例复制并粘贴到该文件中。你可以在我的第一篇文章中阅读它。应该够了吧?
      • 我不确定。试试看,我们会看到的。
      • 如果我在 config.yml 中包含 sonata_classification.yml,那么我可以请求 cmf 页面。如果我不包含它,那么当我想更新数据库时会出现与 cli 上相同的错误,但随后是实体媒体而不是实体类别。
      • 要么包含它,要么确保它已加载。
      • 哦,好的。两个实体都生成了吗?如果是,是否也生成了他们的映射?你能检查一下吗?
      【解决方案4】:

      我解决了这个问题:

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

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

      【讨论】:

        猜你喜欢
        • 2016-04-24
        • 2016-09-03
        • 2013-05-14
        • 1970-01-01
        • 2014-03-31
        • 2018-01-16
        • 2016-09-28
        • 1970-01-01
        • 2016-01-05
        相关资源
        最近更新 更多