Doctrine ODM - 浮点字段不适用于小数字段
Doctrine ODM - float field not working with decimal field
我有一份教义文档,字段配置设置为
/** @ODM\Field(type="float") */
public $stock_price;
在我的 mongodb 上,该字段具有小数验证
stock_price: {
bsonType: 'decimal',
description: 'must be a decimal and is required'
},
当我尝试存储值时 return document validation failed
或 cannot convert decimal to float
$odm = new stock();
$odm->stock_price = 10.99;
$dm->persist($odm);
$dm->flush();
return document validation failed
如果我尝试转换为 mongo 十进制,我也无法插入。
$odm = new stock();
$odm->stock_price = new Decimal128("10.99");
$dm->persist($odm);
$dm->flush();
return cannot convert decimal to float
mongodb-odm 尚不支持十进制(2019 年 10 月 12 日)v2.0.1(参见 Supported Types)。
它是在 mongodb 3.4 版中引入的,仅如 BSON Types mongoDB 文档中所述,因此,它需要添加到 mongodb-odm。
您可以分叉项目并自己添加类型,也可以提出拉取请求。
我会复制 float 类型,创建一个 decimal 类型,更改其获取和写入逻辑以处理 PHP - MongoDB\BSON\Decimal128,最后更新 Type.php 以包含新的 DecimalType。
感谢@filipe 的解释,但我找到的解决方案是将验证更改为 double
,一切正常。
我有一份教义文档,字段配置设置为
/** @ODM\Field(type="float") */
public $stock_price;
在我的 mongodb 上,该字段具有小数验证
stock_price: {
bsonType: 'decimal',
description: 'must be a decimal and is required'
},
当我尝试存储值时 return document validation failed
或 cannot convert decimal to float
$odm = new stock();
$odm->stock_price = 10.99;
$dm->persist($odm);
$dm->flush();
return document validation failed
如果我尝试转换为 mongo 十进制,我也无法插入。
$odm = new stock();
$odm->stock_price = new Decimal128("10.99");
$dm->persist($odm);
$dm->flush();
return cannot convert decimal to float
mongodb-odm 尚不支持十进制(2019 年 10 月 12 日)v2.0.1(参见 Supported Types)。
它是在 mongodb 3.4 版中引入的,仅如 BSON Types mongoDB 文档中所述,因此,它需要添加到 mongodb-odm。
您可以分叉项目并自己添加类型,也可以提出拉取请求。
我会复制 float 类型,创建一个 decimal 类型,更改其获取和写入逻辑以处理 PHP - MongoDB\BSON\Decimal128,最后更新 Type.php 以包含新的 DecimalType。
感谢@filipe 的解释,但我找到的解决方案是将验证更改为 double
,一切正常。