Использовать функцию sql в cakePHP перед сохранением

У меня возникли проблемы с попыткой преобразовать столбец из «varchar» в «деньги». По-видимому, схема по умолчанию неверна. Когда я пытаюсь сохранить поле для PriceRule, я получаю следующую ошибку:

Ошибка SQL: запрещено неявное преобразование типа данных varchar в тип данных money, «PriceRule», столбец «UnitPrice». Используйте функцию 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 создается как строка, а не как функция.

Я постоянно пытался найти обходные пути и бесконечно копался в Google и не нашел ничего полезного.

Если у кого-то есть способ исправить это, это было бы здорово! Даже альтернатива, любая помощь потрясающая!

Заранее спасибо!


person Anthony    schedule 16.08.2016    source источник
comment
Почему бы не исправить тип данных в вашем коде? Тогда вам не придется с этим бороться. Что произойдет, если вы оставите это как текст в своем коде, а кто-то введет неверные данные? С точки зрения приложения не менее важно использовать правильные типы данных.   -  person Sean Lange    schedule 16.08.2016
comment
@SeanLange Как мне это сделать?   -  person Anthony    schedule 16.08.2016
comment
Я понятия не имею. Я даже не могу написать PHP, но попытка преобразовать его в такое обновление указывает, что тип данных в вашем коде является строкой. Конечно, есть числовой тип данных, который вы могли бы использовать. Может быть, кто-то даже с минимальным знанием php может помочь.   -  person Sean Lange    schedule 16.08.2016


Ответы (1)


Просто конвертируйте в деньги в php вот так

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

денежный_формат PHP

person Y. M.    schedule 16.08.2016