CF9 EntityDelete: Как удалить сущности - PullRequest
5 голосов
/ 29 января 2010

Если у меня есть массив сущностей, каков самый простой способ удаления всего массива сущностей (или, проще говоря, всей таблицы ORM)?У меня есть:

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

Теперь, чтобы удалить все объекты, я бы использовал какой-то цикл?Если да, то как мне получить доступ к первичным ключам отдельных объектов внутри?Я пытался:

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

, но это не сработало ...

Ответы [ 3 ]

10 голосов
/ 29 января 2010

EntityLoad вернет массив объектов сущности, чтобы мы могли зацикливаться на нем и использовать entityDelete:

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

Как всегда при удалении данных будьте осторожны! Я вообще предпочитаю мягкое удаление.

6 голосов
/ 29 января 2010

Если вы хотите использовать нотацию массива, вы делаете это следующим образом.

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

Еще один способ сделать это, не заставляя ColdFusion выполнять всю работу, - выполнить запрос.

<cfset ormexecutequery("DELETE FROM User",true)>
0 голосов
/ 29 января 2010

Если вы хотите удалить массив (с точки зрения освобождения памяти), должно работать следующее:

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

Конечно, это удалит только одну ссылку. Если ссылки на объекты (allUsers или отдельные члены массива) есть где-то еще, эти ссылки продолжат работать.

...