2015-03-13 33 views
0

這一定是醜陋的東西顯而易見,但我被困在這,並且無法解決它在過去的兩個小時。在foreach循環中奇怪的變量覆蓋

我有這樣一段代碼:

foreach($idMap as $menuId=>$pageId) 
{ 
    echo('$this->update("menus_items", SET "link = /content/show?id='.$pageId.'" WHERE id = '.$menuId.');'."\n"); 

    $this->update 
    (
     'menus_items', 
     array('link'=>'/content/show?id='.$pageId), 
     array('id = '.$menuId) 
    ); 
} 

echo部分工作正常($pageId是對每個項目,從$idMap採取不同),而Yii中的CDbCommand::update()得到光,並有$pageId等於它是最後一個值所有循環迭代。

換句話說,如果我有20個菜單項,並在結果集中最後一個項目有pageId = 18,然後使用CDbCommand::update()的時候,我得到設置爲最後一個值都菜單項。

這裏肯定有一些變量覆蓋,但是我在過去的兩個小時裏找不到它,特別是,echo只在一行以上顯示了很好的效果。有人可以幫助這裏。

+1

我們看不到'$ this-> update'的作用。我看不到任何覆蓋。該錯誤必須在其他地方。 – steven 2015-03-13 16:41:06

+0

'$ this'是什麼?的CActiveRecord? – hamed 2015-03-13 16:51:35

+0

@steven感謝您嘗試提供幫助。看來,這個問題必定與Yii有關。我會在他們的論壇上提問。如果我在那裏得到一些有價值的答案,我會考慮在這裏重新發布它們。感謝雙重檢查並向我保證,我不會錯過某些愚蠢的東西。 – trejder 2015-03-13 19:20:40

回答

2

猜測,但$this->update()期望單個數組的綁定參數?

$this->update 
    (
     'menus_items', 
     array(
      'link' => '/content/show?id='.$pageId, 
      'id' => $menuId 
     ) 
    ); 
+0

感謝您嘗試提供幫助。看來,這個問題必定與Yii有關。我會在他們的論壇上提問。如果我在那裏得到一些有價值的答案,我會考慮在這裏重新發布它們。感謝雙重檢查並向我保證,我不會錯過某些愚蠢的東西。 – trejder 2015-03-13 19:20:26