我正在使用Magento 1,并尝试使用以下代码添加一个filter byweek(created_time)

$week = 37;
$weekCollection = Mage::getModel('module/modle_name')->getCollection()
                        ->addFieldToFilter("week(created_time)", $week);

不幸的是,在整个函数周围添加了反勾号,所以我得到了错误
SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“week(created戥time)”,查询为:从“affiliateplus戥transaction”中选择“main戥table`.*,从“affiliateplus戥transaction”中选择“SUM(commission)作为“commission戥total”,从“affiliateplus戥transaction”中选择“main戥table”where(`account戥id`=
Magento 1中是否有合法的方法将MySQL函数应用于列名?

最佳答案

你必须使用Zend_Db_Expr。
如果magento遇到Zend_Db_Expr,它将把它解析为一个字符串,并且不以任何方式修改它。
所以看起来是这样的:

$week = 37;
$weekCollection = Mage::getModel('module/modle_name')->getCollection()
                    ->addFieldToFilter(new Zend_Db_Expr("week(created_time)"), $week);

关于php - 在Magento中使用函数会在带有函数的过滤器中添加反引号。有没有什么好的方法可以使这些MySQL函数正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39496209/

10-13 05:25