CFWheels - 如何增加数据库列中的数字?

时间:2012-07-30 11:07:31

标签: orm coldfusion railo cfwheels

只是想知道,使用CFWheels ORM,如何增加列中的数字?

在直接SQL中我会做类似的事情:

UPDATE table 
SET field = field + 1 
WHERE ...

我想避免从列中“获取”值并手动递增。我将在我的应用程序中做很多这样的事情,所以这是我无法做到的开销(另外我还想保持我的代码简单而优雅)。

这样的事可以吗?

<cfset post = model("post").findByKey(99) />
<cfset post.update( myColumn = myColumn + 1 ) />

欣赏一些意见。

2 个答案:

答案 0 :(得分:3)

cfwheels中的orm不支持​​此功能。对于那样的东西直接sql是要走的路。最好的办法是在模型上创建一个自定义方法来封装逻辑。

答案 1 :(得分:3)

如果您需要重复一遍,可以在基础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>