0

我正在通过 Drupal 批处理 API 从视图提交表单以更新我的数据库中的一行。我为此使用的声明是:

db_update('scores')
    ->fields(['status' => 0])
    ->condition('sid', $score->sid)
    ->execute();

批次成功返回并给我反馈

对 1 个项目执行撤消发布

但是,数据库中的行没有更新。

使用以下代码时:

$result = db_update('scores')
    ->fields(['status' => 0])
    ->condition('sid', $score->sid)
    ->execute();

drq($result);

批处理API由于意外输出而返回错误,手动刷新页面后,有问题的行更新!

我一生都无法弄清楚发生了什么,也不知道如何从批处理 API 获取查询以记录在某处,以便我可以看到发生了什么。

任何帮助深表感谢。

4

1 回答 1

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();

它按预期工作。项目的状态在数据库中发生了变化,一切看起来都很好。我知道这对于实际问题来说是一个丑陋的解决方法,但目前这是我能找到的唯一解决方案。

于 2015-07-21T21:38:46.817 回答