Sonata Media Bundle 缺少实体类别
Posted
技术标签:
【中文标题】Sonata Media Bundle 缺少实体类别【英文标题】:Sonata Media Bundle missing entity Category 【发布时间】: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
:
但是当我想进行下一步时,我得到实体类别不存在的错误:
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: ~
【问题讨论】:
分类包安装注册了吗? new Sonata\ClassificationBundle\SonataClassificationBundle(), .. 是的 看起来你不是唯一一个:github.com/sonata-project/SonataMediaBundle/issues/1084。这可能是一个错误。 我明白了.. 感谢您的更新。 【参考方案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
【讨论】:
以上是关于Sonata Media Bundle 缺少实体类别的主要内容,如果未能解决你的问题,请参考以下文章
Symfony Sonata Media Bundle 向用户添加图像/视频
Sonata Media Bundle - 如何按 ID 获取图像或画廊
API 平台 Sonata Media Bundle Gallery - 循环参考
如何在 Sonata Media Bundle 中实现多对多关系