2016-08-16 4 views
2

Ich habe Probleme beim Konvertieren einer Spalte von "Varchar" zu "Geld". Anscheinend ist das Standardschema falsch. Wenn ich versuche, ein Feld für PriceRule zu speichern, ist dies der Fehler erhalte ich:Verwenden Sie SQL-Funktion in CakePHP beforeSave

SQL Error: Disallowed implicit conversion from data type varchar to data type money, 'PriceRule', column 'UnitPrice'. Use the CONVERT function to run this query.

Dementsprechend versuche ich die Funktion convert zu verwenden, um das Feld Datentyp zu konvertieren.

In My Model:

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

Dies ist die SQL es erzeugt:

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 

Diese Abfrage wird nicht ausgeführt, weil die CONVERT-Funktion als Zeichenfolge erstellt wird, nicht ein Funktion.

Ich habe ständig versucht, Workarounds zu finden und habe endlos auf Google gegraben und kann nichts hilfreiches zu finden scheinen.

Wenn jemand eine Möglichkeit hat, das zu beheben, wäre das großartig! Sogar eine Alternative, jede Hilfe ist großartig!

Vielen Dank im Voraus!

+1

Warum den Datentyp in Ihrem Code nicht beheben? Dann musst du nicht damit ringen. Was passiert, wenn Sie dies als Text in Ihrem Code belassen und jemand ungültige Daten eingibt? Genauso wichtig ist es auf der Anwendungsseite, die richtigen Datentypen zu verwenden. –

+0

@SeanLange Wie mache ich das? – Anthony

+0

Ich habe keine Ahnung. Ich kann PHP nicht einmal buchstabieren, aber zu versuchen, es bei einem solchen Update zu konvertieren, zeigt an, dass der Datentyp in Ihrem Code eine Zeichenkette ist. Sicherlich gibt es einen numerischen Datentyp, den Sie verwenden könnten. Vielleicht kann jemand, der sogar Php-Kenntnisse hat, helfen. –

Antwort

0

konvertieren Nur um Geld in PHP wie diese

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

PHP money_format

Verwandte Themen