Magento 1.7.2でカスタム コレクションをフィルタリングできるかどうか疑問に思っていました。 私の現在のコードは次のようになります。
$collection = $model->getCollection()
->addFieldToFilter('gc_id',array('gt' => 0))
->addFieldToFilter('expiration_date', array('lteq' => Mage::getModel('core/date')->gmtDate()));
生成されたクエリを印刷できます。MySQL で実行すると、適切なテーブル行が得られます。ただし、返されるコレクションにはアイテムがありません。フィルターを使用しないコレクションでも適切なアイテムがすべて返されるため、コレクションの実装に問題はありません。コレクションクラスはから継承しますMage_Core_Model_Resource_Db_Collection_Abstract
クエリ:
SELECT `main_table`.* FROM `st_freegiftcard` AS `main_table` WHERE (gc_id > 0) AND (expiration_date <= '2013-11-15 23:59:20')
現在の醜い回避策:
foreach($collection as $free_gc){
if($free_gc->getGcId() > 0
&& $free_gc->getExpirationDate() <= Mage::getModel('core/date')->gmtDate()){
...
}
}