CF9 Удаление объекта:Как удалить объекты
-
23-09-2019 - |
Вопрос
Если у меня есть массив объектов, какой самый простой способ удалить весь массив объектов (или, говоря таким образом, всю таблицу 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 или отдельные элементы массива) ссылаются где-то в другом месте, эти ссылки будут продолжать работать.