在cakePHP beforeSave中使用sql函数

时间:2016-08-16 16:26:14

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

我在尝试转换' varchar'中的列时遇到了问题。到钱#39; 显然默认架构是错误的。当我尝试为PriceRule保存字段时,这是我得到的错误:

  

SQL错误:不允许从数据类型varchar隐式转换为   数据类型money,' PriceRule',列   '单价&#39 ;.使用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函数是作为字符串创建的,而不是函数。

我一直在努力寻找解决方法,并在谷歌上做了无数的挖掘,似乎找不到任何有用的东西。

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

只需转换为这样的PHP资金

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

PHP money_format