CFWHEELS:在Where子句中使用SQL函数



我在尝试在cfwheels的findall()方法中使用SQL函数时遇到了问题。

<cfset currencyInfo= model('pricelist').findAll(select="currencyid,name",where="YEAR(startDate)=#params.year#")>

这里令人困惑的是,在同一语句的选择子句中使用SQL函数时,它就像魅力一样。

<cfset currencyInfoTest= model('pricelist').findAll(select="currencyid,name,YEAR(startDate) AS Year",where="id=5")>

我猜CFWHEELS可能仅在"选择"子句中处理列映射,而不是在Whewher子句中计算或操作的语法。

我需要在上述内容中使用一些SQL功能。有什么想法吗?

您在假设CFWHEELS不允许where参数中不允许SQL函数的假设正确。它可以解析属性名称的字符串,以便可以将它们映射到数据库中的列,并且还将<cfqueryparam>绑定应用于传递的值。但是它无法将调用拨打到SQL函数。

但是,您可以根据所需的SQL函数创建一个计算的属性,并与之查询。

models/PriceList.cfc中:

function init() {
  property(name="startDateYear", sql="YEAR(pricelists.startdate)";
}

在您的findAll电话中:

currencyInfo = model('pricelist').findAll(select="currencyid,name", where="startDateYear=#params.year#");

最新更新