1

只是想知道,使用 CFWheels ORM,我如何在列中增加一个数字?

在直接的 SQL 中,我会执行以下操作:

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

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

像这样的东西可以吗?

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

感谢一些输入。

4

2 回答 2

3

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

于 2012-07-30T14:30:03.063 回答
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>
于 2012-07-30T15:21:25.887 回答