目标:使用实体 ->set() 和 ->save() 以编程方式将字符串字段的值从“1”更改为“01”
当尝试以编程方式(通过自定义模块的 cron 挂钩)更新节点上的字段时,“Text (plain)”字段的初始值为“1”。当尝试以编程方式将字段更新为“01”(0 对业务目的很重要)时,更改将被忽略。但是,如果我设置为几乎任何其他值,它确实有效。
// DOES NOT save update to field (Current value is "1")
$node = \Drupal\node\Entity\Node::load(1);
$node->set('field_code', '01'); // '01' is indeed a string
$node->save();
// DOES save update to field (Current value is "1")
$node = \Drupal\node\Entity\Node::load(1);
$node->set('field_code', '02');
$node->save();
如果我要通过 UI 的节点编辑表单进行更改,则更改将保存在同一场景中。
有人遇到过这种情况么?似乎必须进行一些验证,'01' == '1'; // true
在 PHP 中保存为(作为字符串)之前比较字符串。