2016-09-09 3 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. 
} 
?> 

Update: Если я $product->Name = "Abcd 123";, в Name' field is getting updated, but not the Stock`

Это не сработало. Поле StockProduct таблица не обновляется. Может ли кто-нибудь сказать мне, где я ошибся?

+2

мольбы предоставить более подробную информацию - поместить 'отладки :: дамп ($ продукта);' 'или даже отладки :: шоу ($ UniqueCode)' в код для анализа. – munomono

+0

Вы полностью уверены, что получаете запрос от $ продукта? Попробуйте «var_dump ($ product)» или «echo $ product-> ID» после запроса или используйте соответствующий инструмент, например xdebug, для отладки вашего кода. – wmk

+0

@wmk, да '$ product' возвращает запись – WatsMyName

ответ

0

У меня есть проблема. Для кого-то, кто активирует эту тему с той же проблемой в будущем.

Фактически Stock поле целое, и я поставлял строковое значение. Вам нужно преобразовать строку в целое число перед поставкой на объект. Например:

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

Вы должны уметь упростить это, просто выполнив: '$ updatedvalue = (int)" 250 ";' – PsychoMo

+0

@Morven, я просто дал это в качестве примера, иначе '$ updatedvalue 'поступает из поля формы. – WatsMyName

Смежные вопросы