CFWheels:在WHERE子句中使用SQL函数?

时间:2014-01-21 06:33:22

标签: mysql coldfusion cfwheels

我在尝试在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函数,如上所述。有什么想法吗?

1 个答案:

答案 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#");