【问题标题】:Use sql function in cakePHP beforeSave在 cakePHP beforeSave 中使用 sql 函数
【发布时间】:2016-08-16 16:26:14
【问题描述】:

我在尝试将列从“varchar”转换为“money”时遇到了麻烦。 显然默认模式是错误的。当我尝试为 PriceRule 保存一个字段时,这是我得到的错误:

SQL 错误:不允许从数据类型 varchar 隐式转换为 数据类型money,'PriceRule',列 '单价'。使用 CONVERT 函数运行此查询。

因此,我尝试使用 convert 函数来转换字段数据类型。

在我的模型中:

public function beforeSave($options = array()){
    $UnitPrice = $this->data["PriceRule"]["UnitPrice"];
    $this->data["PriceRule"]["UnitPrice"] = 'CONVERT(money,$UnitPrice)';
}

这是它生成的SQL

UPDATE [pricerule] 
SET    [pricepolicyid] = 1, 
       [producttypeid] = 1, 
       [unitprice] = 'CONVERT(money,$UnitPrice)', 
       [minquantity] = 1, 
       [maxquantity] = 4, 
       [modifiedby] = 1055, 
       [modifieddate] = '2016-08-16 11:18:11', 
       [active] = '1' 
WHERE  [pricerule].[priceruleid] = 62 

此查询不会运行,因为 CONVERT 函数是作为字符串而不是函数创建的。

我一直在不断尝试寻找解决方法,并且在谷歌上进行了无休止的挖掘,但似乎找不到任何有用的东西。

如果有人有办法解决这个问题,那就太好了!即使是替代方案,任何帮助都很棒!

提前致谢!

【问题讨论】:

  • 为什么不修复代码中的数据类型?那你就不必和它搏斗了。如果你把它作为文本留在你的代码中并且有人输入了无效数据会发生什么?从应用程序的角度来看,使用正确的数据类型同样重要。
  • @SeanLange 我该怎么做?
  • 我不知道。我什至无法拼写 PHP,但尝试在更新时转换它,表明代码中的数据类型是字符串。当然,您可以使用数字数据类型。也许对 php 有一点了解的人可以提供帮助。

标签: sql sql-server cakephp cakephp-2.0 sql-function


【解决方案1】:

像这样在php中转换成钱

$UnitPriceInMoney = money_format('%.2n',$UnitPrice);

PHP money_format

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2021-04-23
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多