在codeigniter中选择or_where

时间:2014-02-27 03:13:55

标签: codeigniter

我想选择记录但是当我使用or_where不遵循我需要的时候:

enter image description here

对于黄线,我不需要,但它也出现。 我们来看看我的代码

$this->db->select('*')
                ->from('tblDiscountType')
                ->where('ShopLocationID', 4)
                ->or_where('ShopLocationID', NULL)
                ->where('DiscountApplicableId', 1)
                ->where('CountryID', 7)
                ->where('Current', -1);
        return $this->db->get();

1 个答案:

答案 0 :(得分:0)

如果您执行$this->db->last_query();,则可以看到生成的查询。

实际上,它确实像

SELECT * FROM tblDiscountType 
    WHERE ShopLocationID = 4 OR ShopLocationID IS NULL 
    AND DiscountApplicableId = 1 AND ...

你想要的是WHERE (ShopLocationID = 4 OR ShopLocationID IS NULL) AND DiscountApplicableId = 1 AND ...

Active Record对于复杂查询来说并不是那么好用。因此,要么直接使用$this->db->query($your_query)编写查询,要么像下面这样使用活动记录:

$this->db->where("(ShopLocationID = 4 OR ShopLocationID IS NULL) AND DiscountApplicableId = 1 AND ...", NULL, FALSE);