2010-01-29 4 views
5

엔티티 배열이있는 경우 전체 엔티티 배열을 삭제하는 가장 쉬운 방법은 무엇입니까 (또는 이렇게하면 전체 ORM 테이블에 넣을 수 있습니다)? 나는 가지고있다 :CF9 EntityDelete : 엔티티를 삭제하는 방법

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

이제 엔티티를 모두 삭제하려면 어떤 종류의 루프를 사용합니까? 그렇다면 어떻게 내부의 개별 엔터티 기본 키에 액세스합니까? 내가 시도 : (메모리를 해제 기준) 배열을 삭제하면 당신이 무엇을 원하는 경우 ...

답변

10

EntityLoad 엔티티 객체의 배열을 반환합니다 그래서 우리는 그 이상 루프 수 및 사용

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

을 이제까지로 데이터가 조심 삭제할 때! 나는 일반적으로 부드러운 삭제를 선호합니다.

+0

cfif 태그가 아닌 cfloop 태그로 끝나야합니다. – namtax

+1

D' oh! 예, 나는 그 예를 또한 바로 잡았습니다. –

0

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

하지만이 작동하지 않았다, 다음과 같은 작업을해야합니다 :

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

물론 이것은 하나의 참조 만 제거합니다. 객체 (allUsers 또는 개별 배열 멤버)가 다른 곳에서 참조되는 경우 이러한 참조가 계속 작동합니다. entityDelete을

6

배열 표기법을 사용하려면 다음과 같이하십시오.

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

ColdFusion을 만들지 않고이 작업을 수행하는 또 다른 방법은 쿼리를 실행하는 것입니다.

<cfset ormexecutequery("DELETE FROM User",true)> 
관련 문제