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 это путь. лучшее, что нужно сделать, - это создать собственный метод в вашей модели для инкапсуляции логики.

Другие вопросы по тегам