【问题标题】:Silverstripe could not update recordSilverstripe 无法更新记录
【发布时间】:2016-09-09 07:07:05
【问题描述】:

我在 Silverstripe 中有以下代码

<?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-&gt;Name = "Abcd 123";Name' field is getting updated, but not theStock`

这不起作用。 Product 表的 Stock 字段未更新。谁能告诉我哪里出错了?

【问题讨论】:

  • 请提供更多详细信息 - 将 debug::dump($product); 甚至 debug::show($UniqueCode); 放入您的代码中以进行分析。
  • 您完全确定您从查询中获得了 $product 吗?在查询后尝试var_dump($product)echo $product-&gt;ID,或使用适当的工具(如 xdebug)来调试您的代码。
  • @wmk,是的,$product 返回记录
  • @munomono, $product 返回记录
  • @munomono,实际上我将字符串值发送到整数字段,Stock 是整数字段。我已经解决了这个问题,谢谢

标签: silverstripe


【解决方案1】:

我已经解决了这个问题。对于将来在此线程中遇到相同问题的人。

实际上Stock 字段是整数,我提供的是字符串值。在提供给对象之前,您需要将字符串转换为整数。例如:

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

【讨论】:

  • 您应该能够通过简单地执行以下操作来简化此操作:$updatedvalue = (int)"250";
  • @Morven,我只是举个例子,否则 `$updatedvalue' 来自表单字段。
猜你喜欢
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 1970-01-01
  • 2020-03-05
相关资源
最近更新 更多