2010-12-31 12 views
0

Ich benutze Zend Framework. Ich habe Baumtabellen. Benutzer und Gruppen und eine Tabelle, die sie verbindet.Update mit Zend_DB in mehreren Zeilen

Ich möchte ein Feld von Benutzern einer bestimmten Gruppe erhöhen. Um einen Benutzer zu erhöhen, mache ich:

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

Ich habe versucht, mehrere Quellen zu verwenden.

Ich habe keine Ahnung, wie man die Tabellen in einem wo mit Zend verbinden.

Antwort

0

Um einen JOIN mit Zend_Db_Table zu verwenden, müssen Sie die Integritätsprüfung deaktivieren.

Siehe Beispiel # 27 in den ZF Reference Guide for 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); 

Beachten Sie, dass die Integritätsprüfung deaktivieren wird auch ein Teil der Automagic des resultierenden Re-Cord deaktivieren:

Die resultierende Reihe oder rowset wird zurückgegeben als eine 'gesperrte' Zeile (dh die save(), delete() und alle Feld-Einstellungsmethoden werden eine Ausnahme werfen).

-1

laden $ num mit einem Array von IDs aus einer bestimmten Gruppe

Der folgende Code wird den Job

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