mongodb - Doctrine ODM - 浮点字段不适用于十进制字段
问题描述
我有一个学说文档,字段配置设置为
/** @ODM\Field(type="float") */
public $stock_price;
在我的 mongodb 上,该字段具有十进制验证
stock_price: {
bsonType: 'decimal',
description: 'must be a decimal and is required'
},
当我尝试存储它返回的值document validation failed
或cannot convert decimal to float
$odm = new stock();
$odm->stock_price = 10.99;
$dm->persist($odm);
$dm->flush();
返回document validation failed
如果我尝试转换为 mongo 十进制,我也插入失败。
$odm = new stock();
$odm->stock_price = new Decimal128("10.99");
$dm->persist($odm);
$dm->flush();
返回cannot convert decimal to float
解决方案
mongodb-odm 尚不支持小数(2019 年 10 月 12 日)v2.0.1(请参阅支持的类型)。
它是在 mongodb 版本 3.4 中引入的,仅如BSON Types mongoDB 文档中所述,因此需要将其添加到 mongodb-odm。
您可以分叉项目并自己添加类型,也可以提出拉取请求。
我将复制浮点类型,创建一个十进制类型,更改其获取和写入逻辑以处理PHP - MongoDB\BSON\Decimal128,最后更新 Type.php 以包含新的 DecimalType。
推荐阅读
- amazon-web-services - 如何从 CLI 进行所有 S3 存储桶配置设置?
- python - 如何访问存储在 Django 中的 ManyToMany 相关表中的数据?
- ios - 我们如何获得 iOS 15.1 模拟器?
- javascript - 如何将公会变量传递给 discord.js 中的事件文件?
- android - 在浓缩咖啡测试中瞄准 NachoChip
- mysql - 根据另一个表中的值更新一个表的列值
- r - 如何根据组件节点的最大度数在图的组件之间添加边
- asp.net-mvc - 局部视图中的 asp-for 不会生成正确的 id 名称
- haskell - Haskell:获取所有路径
- arrays - 为什么我一直打印出内存地址而不是数组值?