Drupal db_update不起作用,除非通过批处理API发生故意错误

时间:2015-07-21 20:21:23

标签: drupal drupal-7 drupal-views drupal-batch

我正在通过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中获取查询以便在某处记录,以便我可以看到正在发生的事情。

非常感谢任何帮助。

1 个答案:

答案 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中更改,一切似乎都很好。我知道这对于实际问题来说是一个丑陋的解决方法,但此时它是我能找到的唯一解决方案。