CF9 EntityDelete: Come eliminare le entità
-
23-09-2019 - |
Domanda
Se ho una serie di soggetti, che cosa è il modo più semplice di eliminare l'intero array di entità (o per dirla in questo modo, l'intera tabella ORM)? Ho:
<cfset allUsers = EntityLoad("User", {}, false)/>
Ora per eliminare tutte le entità, dovrei utilizzare una sorta di un ciclo? Se sì, come posso accedere alle singole chiavi entità primarie all'interno? Ho provato:
<cfset userTemp = EntityLoad("User", allUsers[i].User.userID, true) />
, ma che non ha funzionato ...
Soluzione
EntityLoad restituirà un array dell'entità oggetti in modo da poter eseguire un ciclo su questo e utilizzare entityDelete:
<cfloop array="#allUsers#" index="User">
<cfset entityDelete( User )>
</cfloop>
Come sempre quando si eliminano i dati attenzione! Io generalmente preferisco un morbido eliminare.
Altri suggerimenti
Se si desidera utilizzare la notazione array, lo si fa in questo modo.
<cfloop from="1" to="#arraylen(allUsers)#" index="i">
<cfset entityDelete( allUsers[i] )>
</cfloop>
Un altro modo per farlo senza fare ColdFusion fare tutto il lavoro è quello di eseguire una query.
<cfset ormexecutequery("DELETE FROM User",true)>
Se l'eliminazione della matrice (in termini di liberazione della memoria) è ciò che si vuole fare, il seguente dovrebbe funzionare:
<cfset allUsers = "">
<!--- or --->
<cfset StructDelete(variables, "allUsers")>
Naturalmente questo eliminerebbe un solo riferimento. Se gli oggetti (AllUsers oi singoli membri dell'array) si fa riferimento da qualche altra parte, questi riferimenti avrebbero continuato a lavorare.