Это должно быть что-то уродливое, но я застрял на этом и не могу решить его в течение последних двух часов.
У меня есть этот код:
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 ), а CDbCommand::update() Yii получает wako и имеет $pageId равное последнему значению для всех итераций цикла.
Другими словами, если у меня есть 20 пунктов меню, а последний элемент в наборе результатов имеет pageId = 18 , то при использовании CDbCommand::update() я получаю все пункты меню, установленные на это последнее значение.
Здесь должна быть какая-то переменная перезапись, но я не могу найти ее в течение последних двух часов, особенно, что echo одной строке выше отлично работает. Может кто-то помочь здесь.
Угадай, но делает ли это $this->update() ожидающий один массив для своих аргументов привязки?
$this->update ( 'menus_items', array( 'link' => '/content/show?id='.$pageId, 'id' => $menuId ) );