2010-12-20 44 views
0

我將如何使它所以我的條件:「其中」 +「or_where, 「or_where」 留出的條件

$this->db->where('msgto.msgto_display', 'y'); 
$this->db->where('msgto.msgto_unread', 'y'); 

但隨後有:

$this->db->where('msgto.msgto_recipient', $userid); 
$this->db->or_where('msgto.msgto_recipient', 4); 

目前其很好,除了當它讀取「or_where」它離開「條件」之上,所以結果收件人4沒有標記('msgto.msgto_display', 'y')('msgto.msgto_unread', 'y')

感謝您的幫助:)

+0

我不敢相信人類可以用純淨的奇妙SQL產生這樣一個醜陋的垃圾。 – 2010-12-20 20:13:15

+0

我相信二進制會更容易閱讀:P – Elgoog 2010-12-20 20:16:49

回答

1

你可以嘗試使用CodeIgniters $這個 - > DB-> where_in()函數:

$this->db->where_in('msgto.msgto_recipient', array($userid, 4)); 

我在哪裏,我需要具備的條件是真有多個可能的值有類似的問題,這訣竅。

我的情況是我想找到狀態處於已發佈或已鎖定狀態的內容。

$this->db->where_in('status', array('published','locked')); 
+0

非常感謝!像魅力一樣工作。祝你和家人聖誕快樂! – Elgoog 2010-12-23 03:23:56

+0

太棒了。樂意效勞。祝你聖誕快樂。 – 2010-12-23 18:07:36

0

我不確定CodeIgniter的查詢生成器是否足夠強大,可以根據其文檔處理這種情況。您可能需要先對收件人進行查詢,然後手動過濾結果。

+0

請問這不會把不必要的工作量放到服務器上嗎?我知道它不會太多,但是從長遠來看,在查詢結果中篩選結果不會比在查詢運行後過濾它們更好嗎? – Elgoog 2010-12-20 20:20:19

+0

@Elgoog:「給我那個小工具箱,以便我可以找到我想要的工具」-vs-「穿過那個小工具箱,給我任何紅色的小工具,以及任何綠色的小工具,並貼上他們的標籤「 – drudge 2010-12-21 01:52:44

+0

@jnpcl你說得很好! – Elgoog 2010-12-21 04:28:36