只是想知道,使用CFWheels ORM,如何增加列中的数字?
在直接SQL中我会做类似的事情:
UPDATE table
SET field = field + 1
WHERE ...
我想避免从列中“获取”值并手动递增。我将在我的应用程序中做很多这样的事情,所以这是我无法做到的开销(另外我还想保持我的代码简单而优雅)。
这样的事可以吗?
<cfset post = model("post").findByKey(99) />
<cfset post.update( myColumn = myColumn + 1 ) />
欣赏一些意见。
答案 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>