为了账号安全,请及时绑定邮箱和手机立即绑定

Doctrine ODM 在更新文档时找不到“Doc​​trine\ODM\MongoDB

Doctrine ODM 在更新文档时找不到“Doc​​trine\ODM\MongoDB

PHP
芜湖不芜 2021-09-05 16:22:20
我创建了一个类来更新购物车对象。当我尝试更新已存储在数据库中的对象时,出现错误The class "Doctrine\ODM\MongoDB\PersistentCollection" was not found in the chain configured namespaces App\Document"。此错误仅发生在购物车对象上(并且仅在对象更新期间。创建新对象运行时没有问题),尽管项目中存在类似的对象不会导致此类问题。除了这个错误,我还发现了几个:仅当您尝试更新“EmbedMany”类型的字段时才会出现此错误。尝试更新通过而没有错误的所有其他字段。此外,对任何其他对象的任何操作都没有问题。当我尝试使用 QueryBuilder 时,出现错误 Class 'Cart' does not exist用于更新购物车对象的类只是一组业务逻辑(经过检查,事实证明它不会以任何方式影响错误,所以我没有展示逻辑)和标准对象保存使用:$cart = $this->documentManager->getRepository(Cart::class)->find('some_id');$cart->setProducts([/* CartItem[] */]);$this->documentManager->flush();我还附上了配置文件 ( config/packages/doctrine.yaml):doctrine_mongodb:    auto_generate_proxy_classes: true    auto_generate_hydrator_classes: true    connections:        default:            server: '%env(resolve:MONGODB_URL)%'            options: {}    default_database: '%env(resolve:MONGODB_DB)%'    document_managers:        default:            auto_mapping: true            mappings:                App:                    is_bundle: false                    type: annotation                    dir: '%kernel.project_dir%/src/Document'                    prefix: 'App\Document'                    alias: App可能是什么问题呢?
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

再次检查每个逻辑阶段返回的变量类型。从数据库中检索时,$cart->getProducts()不知何故属于 type [object] (Doctrine\\ODM\\MongoDB\\PersistentCollection: {}),因此在更新购物车对象时未找到该类会发生错误。我还查看了Doctrine\Common\Collections\Collection接口文档,发现有一种toArray()方法可以很好地PersistentCollection转换为[ CartItem[] ].


查看完整回答
反对 回复 2021-09-05
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信