Mysql CFWheels:在WHERE子句中使用SQL函数?
我在尝试在CfWheels的findAll()方法的where子句中使用SQL函数时遇到了一个问题Mysql CFWheels:在WHERE子句中使用SQL函数?,mysql,coldfusion,cfwheels,Mysql,Coldfusion,Cfwheels,我在尝试在CfWheels的findAll()方法的where子句中使用SQL函数时遇到了一个问题 这里令人困惑的是,当在同一语句的select子句中使用sql函数时,它就像一个符咒 <cfset currencyInfoTest= model('pricelist').findAll(select="currencyid,name,YEAR(startDate) AS Year",where="id=5")> 我猜CFWheels可能只是在select子句中处理列映射,而
这里令人困惑的是,当在同一语句的select子句中使用sql函数时,它就像一个符咒
<cfset currencyInfoTest= model('pricelist').findAll(select="currencyid,name,YEAR(startDate) AS Year",where="id=5")>
我猜CFWheels可能只是在select子句中处理列映射,而不是在where子句中处理任何计算或操作的语法
如上所述,我需要在where子句中使用一些sql函数。有什么想法吗?您的假设是正确的,即CFWheels在
where
参数中不允许使用SQL函数。它解析属性名的字符串,以便将它们映射到数据库中的列,并且还将
绑定应用于传入的值。但它无法解析出对SQL函数的调用
但是,您可以基于所需的SQL函数创建一个查询
在型号/PriceList.cfc
中:
function init() {
property(name="startDateYear", sql="YEAR(pricelists.startdate)";
}
在您的findAll
呼叫中:
currencyInfo = model('pricelist').findAll(select="currencyid,name", where="startDateYear=#params.year#");
一般来说,我不知道。在这种特殊情况下,不要。从params.year创建开始和结束日期变量,并使用startDate>=params.year的1月1日和startDate
currencyInfo = model('pricelist').findAll(select="currencyid,name", where="startDateYear=#params.year#");