CFWheels - Как мне увеличить число в столбце базы данных?
Просто интересно, с CFWheels ORM, как мне увеличить число в столбце?
В прямом SQL я бы сделал что-то вроде:
UPDATE table
SET field = field + 1
WHERE ...
Я хотел бы избежать "извлечения" значения из столбца и увеличения его вручную. Я буду делать многое из этого в своем приложении, поэтому я могу обойтись без дополнительных затрат (плюс я бы также хотел, чтобы мой код был простым и элегантным).
Может ли что-то подобное работать?
<cfset post = model("post").findByKey(99) />
<cfset post.update( myColumn = myColumn + 1 ) />
Ценю некоторый вклад.
2 ответа
Решение
Вы можете абстрагировать это в базе Model.cfc
если вам нужно это много раз повторить:
<cfcomponent extends="Wheels">
<cffunction name="incrementColumn" returntype="boolean">
<cfargument name="key" type="string" required="true">
<cfargument name="property" type="string" required="true">
<cfset local.record = this.findByKey(arguments.key)>
<cfset local.record[arguments.property]++>
<cfreturn local.record.update()>
</cffunction>
</cfcomponent>
Затем вы можете вызвать его с вашего контроллера следующим образом:
<cfif post = model("post").incrementColumn(params.key, "myColumn")>
Success
<cfelse>
Error
</cfif>
Форма в cfwheels не поддерживает это. для таких вещей, как прямой SQL это путь. лучшее, что нужно сделать, - это создать собственный метод в вашей модели для инкапсуляции логики.