2010-01-29 14 views
5

Jeśli mam tablicę encji, jaki jest najprostszy sposób usunięcia całej tablicy encji (lub ułożenia w ten sposób całej tabeli ORM)? Mam:CF9 EntityDelete: Jak usunąć encje

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

Teraz, aby usunąć wszystkie podmioty, czy użyłbym jakiejś pętli? Jeśli tak, to w jaki sposób mogę uzyskać dostęp do kluczy podstawowych poszczególnych jednostek? Próbowałem:

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

ale to nie działa ...

Odpowiedz

10

EntityLoad powróci tablicą podmiotu obiektów więc możemy, że pętla nad i używać entityDelete:

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

Jak zawsze podczas usuwania danych uważać! Generalnie wolę miękkie usuwanie.

+0

przypuszczam to powinno zakończyć z tagiem cfloop, a nie cfif – namtax

+1

D'oh! Tak, poprawiłem również ten przykład. –

0

Jeśli usunięcie tablicy (w zakresie zwalniania pamięci) jest to, co chcesz zrobić, następujące powinny działać:

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

Oczywiście usunie to tylko jedno odwołanie. Jeśli obiekty (allUsers lub poszczególne elementy tablicy) są przywoływane w innym miejscu, odniesienia te będą nadal działać.

6

Jeśli chcesz używać notacji tablicowej, robisz to w ten sposób.

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

Innym sposobem zrobienia tego bez konieczności wykonywania ColdFusion jest wykonanie kwerendy.

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