如果我有实体的阵列,什么删除实体的整个阵列的最简单的方法(或把它这样,整个ORM表)?我有:

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

现在,删除所有的实体,我会用某种循环的?如果是这样,我怎么访问内的各个实体的主键?我想:

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

但没有工作...

有帮助吗?

解决方案

EntityLoad将返回实体对象的数组,所以我们可以遍历该并使用entityDelete:

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

一如以往删除数据时要小心!我一般喜欢软删除。

其他提示

如果你想使用数组表示法,你不喜欢这样。

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

另一种方式来做到这一点而不使ColdFusion的要做的全部工作是执行查询。

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

如果删除阵列(在释放内存方面)是你想做的事,下面应该工作:

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

当然,这将仅删除一个引用。如果对象(ALLUSERS或各个阵列成员)被引用别的地方,这些参考文献将继续工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top