Artikel mit ‘MySQL’ getagged

MySQL Update mit Symfony

Mittwoch, 18. Juni 2008

Es gibt mehrere Möglichkeiten mit dem PHP Framework Symfony mehrere Zeilen einer Datenbank (in unserem Fall MySQL) zu updaten.

Nehmen wir den Befehl:

UPDATE user SET active=0 WHERE password=1234

Die erste (und offensichtliche) Möglichkeit lautet, alle User mit dem Passwort ‘1234′ mithilfe eines Criteria auszulesen – um dann mittels einer foreach Schleife einzelnt die Datensätze durchlaufen und upzudaten.

Allerdings verbraucht diese Möglichkeit unnötig viel Resourcen, weil X+1 SQL-Querys ausgeführt werden.

Um dieses zu vermeiden, gibt es einen schöneren Weg über die BasePeer Class von Symfony:

$con = Propel::getConnection();

// — Select Anweisung (steht also im WHERE Teil)
$c_select = new Criteria();
$c_select->add(UserPeer::ACTIVE, 0);

// — Eigentliche Update Anweisung
$c_update = new Criteria();
$c_update->add(UserPeer::PASSWORD, 1234);

BasePeer::doUpdate($c_select, $c_update, $con);

Mittels diesen kleinen Symfony Snippets ist es also Möglich, schnell mehrere Zeilen in einer Tabelle Resourcen schonend  zu updaten.

Im oberen Beispiel wird nämlich genau 1 Query ausgeführt. Also haben wir eine Erspannis von X MySQL- Querys.