问题标签 [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.
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。这是更新前:
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 行
请帮我解决这个问题。谢谢
php - ParameterNotFound:缺少对在 DoctrineMongoDBBundle 中使用 staticphp 作为映射类型的依赖
我尝试使用文档staticphp
中描述的映射类型,但是一旦我将我的配置从更新到我收到一条错误消息,即驱动程序缺少服务“doctrine_mongodb.odm.metadata.staticphp.class”:annotation
staticphp
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 之外,我也找不到任何驱动程序。我错过了什么吗?
php - 如何在 QueryBuilder 的 findAndUpdate 中使用 setNewObj 更新注释为 ReferenceMany 的字段
我有这个课程(我的真实课程的简化版本......):
我想更新A
由 $oid 标识的对象,其hasManyB
属性设置B
为由 $oid1 和 $oid2 标识的两个类对象的数组:
为 $newObj 中的每个元素调用方法prepareQueryOrNewObj()
,并将两个 ObjectId 的数组传递给返回一个新的 ObjectId,这是保存后 mongo db 中的结果对象:DocumentPersister
prepareQueryElement()
getDatabaseIdentifierValue()
对我来说这毫无意义。显然我做错了什么。使用 setNewObj in 更新 ReferenceMany 属性的正确方法是findAndUpdate
什么QueryBuilder
?请注意,我对基于操作 php 对象并使用persist()
of保存它的替代方法不感兴趣DocumentManager
(我知道它有效)。在 mongo shell 中,正确/等效的命令是: