Codeigniter数据库其中有多个子句和另一个子句

时间:2012-10-22 01:19:50

标签: php mysql codeigniter activerecord

所以我承认标题有点令人困惑,我道歉因为我不知道该怎么做,所以对那里的建议持开放态度。无论如何对实际的问题。我有一个查询,大部分工作正常,但我仍然会产生一些错误的结果。理解也是如此。这就是形成查询的方式。许多人和许多人松散地联系在一起。我需要做的是在( )中包含一组where子句然后有一个and然后在另一个( )中包含剩余的一组子句我不知道这对任何人都有意义

基本上,如果我直接输入查询,它看起来像......

select * from my_table
where (cond1 = this and cond2 = that) 
and (cond2 != something or cond3 > other)

不确定如何使用codeigniter的活动记录来实现这一点。我现在拥有的是。

$this->db->select('user_event_invite.*, game_bridge.*, user_event.*, user_event.location as bizfo')
->from('user_event')
->join('game_bridge', 'user_event.gID = game_bridge.gID')
->join('user_event_invite', 'user_event_invite.eID = user_event.eID')
->where('user_event_invite.friendID', $mID)
->where('user_event.isactive', 0)
->where('user_event_invite.isactive', 0)
->where('user_event.ends >=', $this->genfunc->unixToMySQL(time()))
->where('user_event.ends !=', '0000-00-00 00:00:00')
->or_where('yes > ', 0)
->or_where('no > ', 0)
->or_where('maybe > ', 0);

但我最终想要的是一组中的所有这些具体条款..

->where('user_event_invite.friendID', $mID)
->where('user_event.isactive', 0)
->where('user_event_invite.isactive', 0)
->where('user_event.ends >=', $this->genfunc->unixToMySQL(time()))
->where('user_event.ends !=', '0000-00-00 00:00:00')

然后将该组与AND组合到另一组。

->or_where('yes > ', 0)
->or_where('no > ', 0)
->or_where('maybe > ', 0);

1 个答案:

答案 0 :(得分:2)

因此,CodeIgniter不支持“包装”你的OR和AND SQL语句,至少不支持使用它的抽象层。 CodeIgniter不建议混合使用OR和AND语句。

您可以尝试了解使用$this->db->last_query()

执行的查询

您还可以尝试使用此子查询库来查看它是否可以帮助您: http://labs.nticompassinc.com/CodeIgniter-Subqueries/

或者你可能只需要使用一些RAW SQL。