我在尝试在CfWheels的findAll()方法的where子句中使用SQL函数时遇到了一个问题。
<cfset currencyInfo= model('pricelist').findAll(select="currencyid,name",where="YEAR(startDate)=#params.year#")>
这里令人困惑的是,在同一语句的select子句中使用sql函数时,它就像一个魅力。
<cfset currencyInfoTest= model('pricelist').findAll(select="currencyid,name,YEAR(startDate) AS Year",where="id=5")>
我猜CFWheels可能只处理select子句中的列映射,而不是where子句中的任何计算或操作语法。
我需要在where子句中使用一些sql函数,如上所述。有什么想法吗?
答案 0 :(得分:2)
您认为CFWheels不允许where
参数中的SQL函数是正确的。它解析字符串中的属性名称,以便它可以将它们映射到数据库中的列,并且它还将<cfqueryparam>
绑定应用于传入的值。但是它无法解析对SQL函数的调用。
但是,您可以根据所需的SQL函数创建calculated property并对其进行查询。
在models/PriceList.cfc
:
function init() {
property(name="startDateYear", sql="YEAR(pricelists.startdate)";
}
在findAll
来电:
currencyInfo = model('pricelist').findAll(select="currencyid,name", where="startDateYear=#params.year#");