1

我有一个带有 MySQL 数据库的 CakePHP 1.3 网站。问题是我有一些价格,双值,使用点作为十进制分隔符存储,但是我的应用程序前端应该使用逗号显示它们。

有没有办法直接在数据库中设置它,或者只是比 str_replace EVERYWHERE 更好的方法来实现它?那会很麻烦,对我来说这似乎是不好的做法。

先感谢您!

4

5 回答 5

1

数据库中的小数点是正确的——它是一个小数点被用作小数点。要显示它,您应该使用number_format进行演示。

于 2012-05-15T20:29:01.853 回答
0

从技术上讲,您可以在模型的 afterFind 处理程序中执行 n str_replace 并忘记它。

于 2012-05-15T20:30:23.770 回答
0
$decimalNumberFromDb= 1234.56;
//
// French notation
//
$frenchNotation = number_format($decimalNumberFromDb, 2, ',', ' '); // Output: 1 234,56
//
// English Notation
//
$englishNotation = number_format($decimalNumberFromDb, 2, '.', ''); // Output: 1234.56
于 2012-05-15T20:34:20.987 回答
0

数据库中的点不是分隔符,而是小数的存储方式。

你可以做一个这样的选择查询

select *, REPLACE(CAST(price AS CHAR), '.', ',') as price_formatted from products;

或者用 PHP 用 number_format 以其他格式显示它

$price = 1300222.99;
echo "Original:     ".$price.PHP_EOL;
echo "english/us:   ".number_format($price,2).PHP_EOL;
echo "Dutch/german: ".number_format($price, 2, ',', '.').PHP_EOL;
echo "French:       ".number_format($price, 2, ',', ' ').PHP_EOL;
echo "Swiss:        ".number_format($price, 2, ',', '\'').PHP_EOL;

例如http://codepad.org/WXjc7d2D

于 2012-05-15T21:58:30.357 回答
0

您可以使用为您执行此操作的行为: https ://github.com/dereuromark/tools/blob/2.0/Model/Behavior/DecimalInputBehavior.php

于 2012-05-16T13:14:40.323 回答