Обновление с помощью Zend_DB в нескольких строках

Я использую Zend Framework. У меня есть древовидные таблицы. Пользователи и группы и одна таблица, связывающая их.

Я хочу увеличить поле для пользователей данной группы. Чтобы увеличить на одного пользователя, я делаю:

$table = 'users';
$update = array(
    'ACLVersion' => new Zend_Db_Expr('ACLVersion + 1')
);
$where[] = $db->quoteInto('id = ?', $user);
$db->update($table, $update, $where);

Я пробовал использовать несколько мест.

Я понятия не имею, как объединить столы в где с Zend.


person Pimmetje    schedule 31.12.2010    source источник


Ответы (2)


Чтобы использовать JOIN с Zend_Db_Table, необходимо отключить проверку целостности.

См. Пример № 27 в Справочном руководстве ZF для Zend_Db_Table:

  $table = new Bugs();
  // retrieve with from part set, important when joining
  $select = $table->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
  $select->setIntegrityCheck(false)
         ->where('bug_status = ?', 'NEW')
         ->join('accounts', 'accounts.account_name = bugs.reported_by')
         ->where('accounts.account_name = ?', 'Bob');
  $rows = $table->fetchAll($select);

Обратите внимание, что отключение проверки целостности также отключит некоторые из автоматических функций результирующего набора записей:

Результирующая строка или набор строк будет возвращена как «заблокированная» строка (то есть save (), delete () и любые методы настройки полей вызовут исключение).

person Gordon    schedule 07.01.2011

Загрузить в $ num массив идентификаторов из заданной группы

Следующий код выполнит эту работу

$table = 'users';
$update = array(
    'ACLVersion' => new Zend_Db_Expr('ACLVersion + 1')
);
$where = $db->quoteInto('id IN (?)', $num);
$db->update($table, $update, $where);
person Pimmetje    schedule 12.01.2011