處理過濾器中的 AND 和 OR

當我們查詢資料時,我們經常需要多個過濾器來獲取我們正在尋找的確切資料集。在 SQL 中,我們使用 AND 和 OR 子句處理它。我們可以通過集合實現同樣的目標。

要在查詢中新增 AND 子句,只需新增另一個方法呼叫即可。這會將第二個過濾器附加到原始 WHERE 語句,並將其與 AND 連線。

Mage::getModel('catalog/product')->getCollection()
        ->addFieldToFilter('sku',array('like'=>'a%'))
        ->addFieldToFilter('sku',array('like'=>'%b'));

生成的 WHERE 子句如下所示:

WHERE (e.sku like 'a%') AND (e.sku like '%b')

現在讓我們說我們想要所有以’a’開頭的 skus 以’b’結尾。我們如何新增 OR 子句?感謝 Magento 的系列,它非常直接。我們將過濾器新增為過濾器陣列中的第二個元素。

Mage::getModel('catalog/product')->getCollection()
        ->addFieldToFilter('sku', array(
            array('like'=>'a%'), 
            array('like'=>'%b')
        ));

現在,生成的 WHERE 子句將如下所示:

WHERE (((e.sku like 'a%') or (e.sku like '%b')))