CF9 EntityDelete: como excluir entidades
-
23-09-2019 - |
Pergunta
Se eu tenho uma variedade de entidades, qual é a maneira mais fácil de excluir toda a variedade de entidades (ou de colocar dessa maneira, toda a tabela ORM)? Eu tenho:
<cfset allUsers = EntityLoad("User", {}, false)/>
Agora, para excluir todas as entidades, eu usaria algum tipo de loop? Se sim, como faço para acessar as chaves primárias da entidade individual? Eu tentei:
<cfset userTemp = EntityLoad("User", allUsers[i].User.userID, true) />
Mas isso não funcionou ...
Solução
EntityLoad retornará uma matriz dos objetos da entidade para que possamos atravessar isso e usar o entityDelete:
<cfloop array="#allUsers#" index="User">
<cfset entityDelete( User )>
</cfloop>
Como sempre, quando a exclusão de dados, tenha cuidado! Eu geralmente prefiro uma exclusão suave.
Outras dicas
Se você deseja usar a notação da matriz, faz isso assim.
<cfloop from="1" to="#arraylen(allUsers)#" index="i">
<cfset entityDelete( allUsers[i] )>
</cfloop>
Outra maneira de fazer isso sem fazer o Coldfusion faz todo o trabalho é executar uma consulta.
<cfset ormexecutequery("DELETE FROM User",true)>
Se a exclusão da matriz (em termos de liberação de memória) é o que você deseja fazer, o seguinte deve funcionar:
<cfset allUsers = "">
<!--- or --->
<cfset StructDelete(variables, "allUsers")>
Claro que isso removeria apenas uma referência. Se os objetos (AllUsers ou os membros da matriz individual) forem referenciados em outro lugar, essas referências continuariam a funcionar.