问题标签 [doctrine-mongodb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
37 浏览

sonata-admin - 如何在 Sonata 中使用 MongoDB 添加多个图像以编辑表单?

我试图找出如何对使用对象 ID 数组存储使用 GridFS 存储的图像 ID 的文档(实体)进行编辑操作。这是一对多的,但在 Document 中使用数组,而不是中间表。

到目前为止,我能够将以下内容添加到我的编辑操作中: 我的新闻实体/文档的图像管理器

这是我在 NewsAdmin configureFormFields() 中使用的代码:

我有一个控制器和一个动作 (@Route("/image/{id}", name="show_image")) 使用 MongoDB GridFS 在前端处理图像的显示。它使用存储在此数组中的 ID: 对象 ID 数组示例

0 投票
1 回答
214 浏览

php - Doctrine-MongoDB postLoad 在创建新文档时触发 preUpdate

我有一个带有一些加密字段的模型,在 postLoad 上我解密了这些字段(效果很好),然后我尝试创建一个新文档(用于跟踪阅读的日志)。

我的问题是,如果我将新的 Log 文档刷新到这个 postLoad 中,我的模型的 preUpdate 会被触发,我不明白为什么。模型没有改变(水合加密字段未保存),即使它已经改变,进入 postLoad 它也不应该触发另一个更新?

谢谢你的想法。

(带有 alcaeus/mongo-php-adapter 的 php 7.1)。

编辑:添加一些精度:

postLoadListener :

uncryptDocument 方法对加密参数的序列化 json 进行解密,并用它对文档进行水合。这些参数是@ODM\NotSaved。所以文档不应该更新。

logManager->record 创建一个新的 Log 文档(虽然没有实现 CryptedDocumentInterface)并将其持久化。如您所见,它已刷新到 postLoad。

在日志中,我看到 Log 文档已正确插入,之后,为我阅读的加密文档触发了 preUpdate。这是更新前:

0 投票
0 回答
57 浏览

php - 为学说 mongo 创建 Sylius 网格

我想创建一个网格来使用教义/mongodb odm 驱动程序显示 mongo 文档。但我得到了错误

" 必须定义参数 "sylius.mongodb.odm.repository.class"。"。

为了解决这个问题,我添加了如下存储库。

但在此之后我收到如下错误

传递给 Sylius\Bundle\ResourceBundle\Controller\ResourceController::__construct() 的参数 4 必须实现接口 Sylius\Component\Resource\Repository\RepositoryInterface,给定 Goldco\Repository\PayvisionCCTokenRepository 的实例,在 /var/www/html/qoneco 中调用/var/cache/crmqoneco/ContainerFxuAVPx/getGoldco_Controller_OrderStateTransitionService.php 第 25 行

请帮我解决这个问题。谢谢

0 投票
0 回答
31 浏览

php - ParameterNotFound:缺少对在 DoctrineMongoDBBundle 中使用 staticphp 作为映射类型的依赖

我尝试使用文档staticphp中描述的映射类型,但是一旦我将我的配置从更新到我收到一条错误消息,即驱动程序缺少服务“doctrine_mongodb.odm.metadata.staticphp.class”:annotationstaticphp

ParameterNotFoundException HTTP 500 内部服务器错误服务“doctrine_mongodb.odm.default_staticphp_metadata_driver”依赖于不存在的参数“doctrine_mongodb.odm.metadata.staticphp.class”。您的意思是其中之一吗:“doctrine.orm.metadata.php.class”、“doctrine.orm.metadata.staticphp.class”、“doctrine_mongodb.odm.configuration.class”、“doctrine_mongodb.odm.event_manager.class” ,“doctrine_mongodb.odm.cache.array.class”,“doctrine_mongodb.odm.cache.apc.class”,“doctrine_mongodb.odm.cache.apcu.class”,“doctrine_mongodb.odm.cache.memcache.class”,“ “doctrine_mongodb.odm.cache.xcache.class”、“doctrine_mongodb.odm.metadata.driver_chain.class”、“doctrine_mongodb.odm.metadata.annotation.class”、

通过手动浏览供应商文件,除了 odm-package 中的 xml-one 和 default-annotation-driver 之外,我也找不到任何驱动程序。我错过了什么吗?

0 投票
0 回答
19 浏览

php - 如何在 QueryBuilder 的 findAndUpdate 中使用 setNewObj 更新注释为 ReferenceMany 的字段

我有这个课程(我的真实课程的简化版本......):

我想更新A由 $oid 标识的对象,其hasManyB属性设置B为由 $oid1 和 $oid2 标识的两个类对象的数组:

为 $newObj 中的每个元素调用方法prepareQueryOrNewObj(),并将两个 ObjectId 的数组传递给返回一个新的 ObjectId,这是保存后 mongo db 中的结果对象:DocumentPersisterprepareQueryElement()getDatabaseIdentifierValue()

对我来说这毫无意义。显然我做错了什么。使用 setNewObj in 更新 ReferenceMany 属性的正确方法是findAndUpdate什么QueryBuilder?请注意,我对基于操作 php 对象并使用persist()of保存它的替代方法不感兴趣DocumentManager(我知道它有效)。在 mongo shell 中,正确/等效的命令是: