2016-09-09 115 views
0

我在SilverstripeSilverstripe無法更新記錄

下面的代碼
<?php 

$product= Product::get()->filter("ProductCode", $UniqueCode)->First(); 
if($product){ 
    $product->Stock = "250"; 
    $product->Name = "Abcd 123"; 
    $product->write(); 
    echo "New Stock = ".$product->Stock; //this prints the OLD value not the NEW one. Nor database is updated. 
} 
?> 

更新: 如果我做$product->Name = "Abcd 123";,將Name' field is getting updated, but not the Stock`

這沒有奏效。 Product表的Stock字段未更新。有人可以告訴我我哪裏錯了?

+2

pleas提供更多詳細信息 - 將'debug :: dump($ product);'或甚至'debug :: show($ UniqueCode);'放入代碼中進行分析。 – munomono

+0

您完全確定您從查詢中獲得$ product?在查詢後嘗試'var_dump($ product)'或'echo $ product-> ID',或者使用像xdebug這樣的工具來調試代碼。 – wmk

+0

@wmk,yes $ product'返回記錄 – WatsMyName

回答

0

我已經解決了這個問題。對於未來有同樣問題的人來說。

其實Stock字段是整數,我正在提供字符串值。在提供給對象之前,您需要將字符串轉換爲整數。例如:

$updatedvalue = "250"; 
$updatedvalue = (int)$updatedvalue; 
+0

你應該可以通過簡單地做到這一點來簡化它:'$ updatedvalue =(int)「250」;' – PsychoMo

+0

@Morven,我只是舉了一個例子,否則'$ updatedvalue'來自表單字段。 – WatsMyName