我想选择记录但是当我使用or_where不遵循我需要的时候:
对于黄线,我不需要,但它也出现。 我们来看看我的代码
$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();
答案 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);