2017-06-16 95 views
0

我想获得数据库条目的正确组合。Codeignitor数据库查询,或在哪里和哪里组合

说例如,我有几个事件。我今天

$this->db->where('endDate >=', date('Y-m-d')); 

想一切都取决于结束的人,但我也希望那些没有一个日期,使他们能够在TBC

$this->db->or_where('startDate', null); 

但最后我只希望那些事件名称是bob!

$this->db->where('eventName', 'bob'); 

但是我得到数据库中的所有eventName。

我该如何获得仅BOBs事件,但与这些日期选项?

回答

0

这是关于如何放置查询的全部内容。你可以简单地尝试这种

$this->db->where('eventName', 'bob'); 
$this->db->where('endDate >=', date('Y-m-d')); 
$this->db->or_where('startDate', null); 

# Syntax 
WHERE eventName = 'bob' AND WHERE endDate >= 'xxxx-xx-xx' OR startDate = null 

# Result 
    - assume endDate is 2017-6-17 
eventName  | endDate   | startDate  | Output(Gets/Not) 
    Bob   | 2017-6-17  | null  |  Gets 
    Ron   | 2017-6-17  | null  |  Not 
    Bob   | 2017-6-18  | null  |  Not 
    Bob   | 2017-6-15  | null  |  Gets 
    Bob   | 2017-6-15  | 2017-3-25 |  Not  
+0

谢谢,我试过这一个,但我得到所有的eventName作为回报。我尝试过所有可能的组合,我很难过。它应该这样工作,但我得到** eventName **与** bill **也 – Sprep

+0

显示您的完整代码 –

+0

嗨,我最终找到了一个解决方案。我会发布一个答案。 – Sprep

0

你可以这样

$this->db->where('endDate >=', date('Y-m-d'))->or_where('startDate', null); 
$this->db->where('eventName', 'bob'); 
+0

我试过这一个,它简单地忽略了 '$ this-> db-> where('eventName','bob');'我认为这会工作,我得到所有的eventNames回: – Sprep

0

感谢阿卜杜拉和穆罕默德简单的使用,我已经找到了解决方案。我做了这似乎工作(尝试所有可能的组合后)

 $this->db->where('eventName', 'bob'); 
     $this->db->where('startDate', NULL)->or_where('endDate >=', date('Y-m-d')); 
     $this->db->where('eventName', 'bob'); 

所以我顶和尾。我知道它不是DRY,但是它是唯一可行的。奇怪的。而我有不到15分,所以不能给他们投票。