Это должно быть что-то уродливое, но я застрял на этом и не могу решить его в течение последних двух часов.
У меня есть этот код:
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 ) );