2009-08-03 11 views
1

In proprive gibt es diese doUpdate Funktion, die die Nummern der betroffenen Zeilen durch diese Abfrage zurückgibt.Propel: Wie die aus DoUpdate zurückgegebenen "betroffenen Zeilen" definiert sind

Die Frage ist, wenn die Zeile nicht aktualisiert werden muss (weil der Wert set bereits derselbe ist wie der Feldwert), werden diese Zeilen als betroffene Zeile gezählt?

Nehmen Sie zum Beispiel, ich die folgende Tabelle haben:

ID | Name | Books 
1 | S1oon | Me 
2 | S1oon | Me 

Nehmen wir an, dass ich eine ORM-Funktion des Äquivalents der folgenden Abfrage schreiben:

update `new table` set 
Books='Me' 
where Name='S1oon'; 

Was wird die doUpdate Ergebnis Rückkehr ? Wird es 0 zurückgeben (weil alle Books Spalte bereits Me sind, daher gibt es keine Notwendigkeit zu aktualisieren), oder wird es 2 sein (weil es 2 Zeilen gibt, die die where Bedingung erfüllen)?

Antwort

0

Es wird 2.

2

Unter der Haube zurückkehren, Propel PDOStatement PDO :: rowCount() Methode, um die Anzahl der betroffenen Zeilen zurück verwendet. Also, die kurze Antwort ist, dass Sie "2" erhalten, wie Sie hier erwarten, aber die längere Antwort ist, dass es leicht davon abhängen kann, wie PDO diese Funktion für Ihre spezifische Datenbank implementiert. (Ich denke, wenn Sie nicht 2 bekommen, sollte es jedoch ein Fehler für PDO sein.)

Siehe the description of rowCount() in the PHP manual für weitere Informationen.

Eine andere Sache zu beachten ist, dass bei Propel ruft Methoden (wie save() oder löschen()), die Rückkehr erwartet Anzahl-Reihen-modifiziert und die in mehr führen als eine Zeile wird geändert (zB wenn Sie ein Buch und seinen Autor hinzufügen und dann durch den Aufruf von book-> save() beide EINGESETZT werden), erhalten Sie die Gesamt Anzahl der Zeilen geändert.

Verwandte Themen