Sql-запрос изменился после обновления magento
Недавно я обновил свой Magento с 1.8.0.1 до 1.9.2.4, после этого появился некоторый код, который работает не так, как раньше. В одном из моих пользовательских модулей (приобретенный модуль) был такой фильтр сбора данных -
$weekCollection = Mage::getModel('mymodule/mymodel')->getCollection()
->addFieldToFilter('id',16)
->addFieldToFilter('week(created_time, 1)',$week);
Это sql-запрос был
SELECT `main_table`.* FROM `table_name` AS `main_table` WHERE (`id` = '16') AND (week(`created_time`, 1) = '13')
Этот запрос отлично работал в более старых версиях
После обновления magento запрос для этого кода будет
SELECT `main_table`.* FROM `table_name` AS `main_table` WHERE (`id` = '16') AND (`week(created_time, 1)` = '13')
Это возвращает ошибку Неизвестный столбец 'неделя(время создания, 1) пункт "в", где'
Какие изменения я должен внести в addFieldToFilter
код, чтобы сделать sql-запрос таким же?
3 answers
Попробуйте приведенный ниже код, который будет работать для вас
$weekCollection = Mage::getModel('mymodule/mymodel')->getCollection()
->addFieldToFilter('id',16);
$weekCollection->getSelect()->where("week(created_time, 1) = $week");
Вы можете использовать:
$weekCollection = Mage::getModel('mymodule/mymodel')->getCollection()
->addFieldToFilter('id',`16)
->getSelect()
->where(new Zend_Db_Expr("week(created_time, 1) = $week"));
Обновите свой код:
$_week = week(created_time, 1);
$weekCollection = Mage::getModel('mymodule/mymodel')->getCollection()
->addFieldToFilter('id',16)
->addFieldToFilter($_week,$week);