0

Drupal バッチ API を介してビューからフォームを送信し、DB の行を更新しています。私がそのために使用するステートメントは次のとおりです。

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 からクエリを取得してどこかにログを記録する方法を理解することもできません。

どんな助けでも大歓迎です。

4

1 に答える 1

0

2 つのクエリが実行されているようです。1 つは前述のdb_updateステートメントによるもので、もう 1 つentity.controller.inc::save()はエンティティ モジュールによるものです。後者は、db_updateアクションを無効にするトランザクションを開始しました。

コードを次のように変更しました

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

$score->status = 0;
$score->save();

そして、それは意図したとおりに機能します。項目のステータスが DB で変更され、すべてが順調に見えます。これが実際の問題の醜い回避策であることはわかっていますが、現時点ではこれが唯一の解決策です。

于 2015-07-21T21:38:46.817 に答える