我正在使用 Magento 1,并且我尝试使用以下代码按 week(created_time)
添加过滤器:
$week = 37;
$weekCollection = Mage::getModel('module/modle_name')->getCollection()
->addFieldToFilter("week(created_time)", $week);
不幸的是,整个函数周围添加了反引号,所以我收到错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'week(created_time)' in 'where clause', query was: SELECT `main_table`.*, SUM(commission) AS `commission_total` FROM `affiliateplus_transaction` AS `main_table` WHERE (`account_id` = '1546') AND (`week(created_time)` = '37') GROUP BY week(created_time, 1)
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/