作为CI中非常大的活动记录查询的一部分,我需要从不同的模型中获取某些内容 - 例如:
$sql = $this->events_model->events_to_sql($val); //returns an sql
$this->db->where($sql, NULL, false);
现在" events_to_sql"运行一个不同的查询来获取它运行所需的一些数据,但它失败了,因为它使用了Active Records"其中"从之前,第一个查询未关闭。
$this->db->where("clients.email !=", '');
我如何告诉CI:这是一个单独的查询。你应该只运行它吗?
*不,我不能先运行其他查询,因为有多个相同的想法,我不希望每个案例分别处理,但所有都要以相同的方式处理。 / p>
*我知道我可以使用其他数据库连接,但我宁愿使用单一连接。
编辑:
这是运行:(按顺序)
//main model
$this->db->where("clients.email !=", '');
//Events to sql function
//run seperate function
$this->db->from('events');
return $this->db->get();
return (string)$sql_built_from_the_event_stuff.
而不是获得:" SELECT * FROM events"我得到" SELECT * FROM events WHERE clients.email!=''"
答案 0 :(得分:0)
使用参数分隔查询, 例如:
$separate = 1;
$sql = $this->events_model->events_to_sql($val,$separate); //returns an sql
$this->db->where($sql, NULL, false);
模型events_to_sql,
public function events_to_sql($val, $queryselector = false){
.....
.....
if($queryselector != 1){
$this->db->where("clients.email !=", '');
}
//Events to sql function
//run seperate function
$this->db->from('events');
return $this->db->get();
return (string)$sql_built_from_the_event_stuff.
}