2015-07-21 90 views
0

我通過Drupal批處理API提交表單以更新數據庫中的一行。我使用的語句是:成功Drupal db_update無法正常工作,除非通過批處理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獲取查詢來記錄某處,以便我可以看到發生了什麼。

任何幫助,非常感謝。

回答

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

它按預期工作。該項目的狀態在數據庫中得到了改變,並且都很好。我知道這對於實際問題來說是一個醜陋的解決方法,但目前這是我能找到的唯一解決方案。