我有一个带有 MySQL 数据库的 CakePHP 1.3 网站。问题是我有一些价格,双值,使用点作为十进制分隔符存储,但是我的应用程序前端应该使用逗号显示它们。
有没有办法直接在数据库中设置它,或者只是比 str_replace EVERYWHERE 更好的方法来实现它?那会很麻烦,对我来说这似乎是不好的做法。
先感谢您!
数据库中的小数点是正确的——它是一个小数点被用作小数点。要显示它,您应该使用number_format进行演示。
从技术上讲,您可以在模型的 afterFind 处理程序中执行 n str_replace 并忘记它。
$decimalNumberFromDb= 1234.56;
//
// French notation
//
$frenchNotation = number_format($decimalNumberFromDb, 2, ',', ' '); // Output: 1 234,56
//
// English Notation
//
$englishNotation = number_format($decimalNumberFromDb, 2, '.', ''); // Output: 1234.56
数据库中的点不是分隔符,而是小数的存储方式。
你可以做一个这样的选择查询
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;
您可以使用为您执行此操作的行为: https ://github.com/dereuromark/tools/blob/2.0/Model/Behavior/DecimalInputBehavior.php