我正在通过Drupal批处理API从视图中提交表单以更新我的数据库中的行。我用它的陈述是:
db_update('scores')
->fields(['status' => 0])
->condition('sid', $score->sid)
->execute();
批次成功返回并给我反馈
在1个项目上执行撤消发布。
但是,DB中的行不会更新。
使用以下代码时:
$result = db_update('scores')
->fields(['status' => 0])
->condition('sid', $score->sid)
->execute();
drq($result);
批处理API由于意外输出而返回错误,手动刷新页面后,的行已更新了!
我不能为我的生活找出正在发生的事情,也不知道如何从批处理API中获取查询以便在某处记录,以便我可以看到正在发生的事情。
非常感谢任何帮助。
答案 0 :(得分:0)
似乎正在执行两个查询。一个是前面描述的db_update
语句,另一个是实体模块中的entity.controller.inc::save()
。后者开始了一项否定db_update
行动的交易。
我现在将代码更改为以下
db_update('scores')
->fields(['status' => 0])
->condition('sid', $score->sid)
->execute();
$score->status = 0;
$score->save();
它按预期工作。项目的状态在DB中更改,一切似乎都很好。我知道这对于实际问题来说是一个丑陋的解决方法,但此时它是我能找到的唯一解决方案。