Frage

Wenn ich eine Reihe von Unternehmen haben, was ist der einfachste Weg, das gesamte Array von Entitäten zu löschen (oder es auf diese Weise zu setzen, die gesamte ORM Tabelle)? Ich habe:

<cfset allUsers = EntityLoad("User", {}, false)/>

Sie nun alle Objekte zu löschen, würde ich eine Art einer Schleife verwenden? Wenn ja, wie kann ich innerhalb Primärschlüssel einzelne Entität zugreifen? Ich habe versucht:

<cfset userTemp = EntityLoad("User", allUsers[i].User.userID, true) /> 

, aber das hat nicht funktioniert ...

War es hilfreich?

Lösung

EntityLoad wird ein Array der Entität zurückgeben Objekte so können wir eine Schleife über das und verwenden entityDelete:

<cfloop array="#allUsers#" index="User">
   <cfset entityDelete( User )>
</cfloop>

Wie immer beim Löschen von Daten vorsichtig sein! Ich in der Regel eine weiche Lösch bevorzugen.

Andere Tipps

Wenn Sie verwenden Array-Notation wollen, tun Sie es wie folgt aus.

<cfloop from="1" to="#arraylen(allUsers)#" index="i">
    <cfset entityDelete( allUsers[i] )>
</cfloop>

Eine andere Möglichkeit, dies zu tun, ohne Coldfusion macht die ganze Arbeit ist es, eine Abfrage auszuführen.

<cfset ormexecutequery("DELETE FROM User",true)>

Wenn das Array zu löschen (in Bezug auf die Speicherfreigabe) ist das, was Sie tun wollen, sollten folgende Arbeiten:

<cfset allUsers = "">
<!--- or --->
<cfset StructDelete(variables, "allUsers")>

Natürlich würde dies nur eine Referenz entfernen. Wenn die Objekte (allusers oder die einzelnen Array-Mitglieder) irgendwo anders referenziert werden, würden diese Verweise auf Arbeit fortzusetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top