如果我有一个实体数组,那么删除整个实体数组(或者说是整个 ORM 表)的最简单方法是什么?我有:
<cfset allUsers = EntityLoad("User", {}, false)/>
现在要删除所有实体,我会使用某种循环吗?如果是这样,我如何访问其中的单个实体主键?我试过:
<cfset userTemp = EntityLoad("User", allUsers[i].User.userID, true) />
但这没有用...
如果我有一个实体数组,那么删除整个实体数组(或者说是整个 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 或单个数组成员)在其他地方被引用,这些引用将继续工作。