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 ...

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top