gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:33:05 25 4
gpt4 key购买 nike

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

最佳答案

您的假设是正确的,即 CFWheels 不允许 where 中的 SQL 函数争论。它解析属性名称的字符串,以便将它们映射到数据库中的列,并且它还应用 <cfqueryparam>绑定(bind)到传入的值。但它无法解析对 SQL 函数的调用。

但是,您可以创建 calculated property基于您需要的 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#");

关于mysql - CFWheels:在 WHERE 子句中使用 SQL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21250850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com