Вопрос

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

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

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

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

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

Это было полезно?

Решение

EntityLoad вернет массив объектов entity, так что мы можем выполнить цикл по нему и использовать 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