首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Money PHP -持久化数据库中Money对象的无损方法

Money PHP -持久化数据库中Money对象的无损方法
EN

Stack Overflow用户
提问于 2018-02-07 10:16:31
回答 1查看 1.7K关注 0票数 2

我指的是moneyphp/money库,我计划在我们的货币处理项目中使用它。文档很好,只是它没有触及如何在数据库中持久化。它谈到将money对象编码为JSON,但是存储字符串使查询变得很困难,就像比较金额或货币一样。

通过一些问题,我发现很少有关于学说的讨论,而且它是如此的具体,以至于我无法从中受益。

用简明扼要的话问我的问题:如何在不泄露细节的情况下存储货币对象?我对Postgresql感兴趣,但是任何关系数据库都可以。

备注:,我读过许多不同的方法来将货币持久化在数据库中,并且它们是他们的工作方式不同。我对这个特定库的工作方式很感兴趣。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-07 16:42:40

在阅读了许多不同的线程、帖子等令人厌烦的文章之后,我得出结论,只有两种方式是可以接受的(参见这个问题中的评论):

  1. 把所有的钱兑换成最小的单位(如。每次保存到数据库并在检索时重新转换。
  2. 使用具有所需准确性的十进制/数字数据类型(在执行正常操作时,许多人推荐数字(15,4),如果执行货币交换操作,则使用数字(15,6) )

当然,无论选择什么,它都必须与货币栏相结合。

我得到了第一个方法,因为 这个图书馆 (这不是我提出问题时的原始方法),这使得这个问题变得非常简单。以下是作者在我创建了一个问题之后的解释

我只能告诉您,我个人将我的钱存储在数据库中,作为一个整数,表示以小单位(美分)表示的金额,如果应用程序使用多种货币(否则,货币在应用程序中是硬编码的),则可以选择货币的CHAR(3)。 您可以通过这种方式获得以小单位表示的金额,作为整数: $money->getMinorAmount()->toInt(); 您可以使用以下方法从存储在数据库中的整数中检索货币: Money::ofMinor($integerAmount, 'USD');

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48661170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档