2010-01-29 18 views
5

Si tengo una matriz de entidades, ¿cuál es la forma más fácil de eliminar toda la matriz de entidades (o para decirlo de esta manera, toda la tabla ORM)? Tengo:CF9 EntityDelete: Cómo eliminar entidades

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

ahora para eliminar todas las entidades, debería utilizar algún tipo de un bucle? Si es así, ¿cómo accedo a las claves principales de las entidades individuales dentro de? Probé:

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

pero que no funcionó ...

Respuesta

10

EntityLoad devolverá un conjunto de objetos de la entidad para que podamos bucle sobre eso y utilizar entityDelete:

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

Como siempre cuando se eliminan los datos que ten cuidado! Generalmente prefiero una eliminación suave.

+0

Supongo que esto debe terminar con una etiqueta cfloop, no un cfif – namtax

+1

D'oh! Sí, también corregí el ejemplo. –

0

Si la eliminación de la matriz (en términos de liberación de memoria) es lo que quiere hacer, el siguiente debería funcionar:

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

Por supuesto, esto solo eliminaría una referencia. Si los objetos (todosUsuarios o los miembros individuales de la matriz) se referencian en otro lugar, estas referencias continuarían funcionando.

6

Si desea utilizar la notación de matriz, hágalo así.

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

Otra manera de hacer esto sin hacer ColdFusion hacer todo el trabajo es para ejecutar una consulta.

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