2011-11-12 33 views
1

我可以获得使用活动记录类进行的最后一个查询,并修改它的某些部分并在codeigniter中重做该查询。我正在尝试为我的分页获得总页数。我不能直接编写我的查询,因为它是在运行时在一些for循环中动态创建的,并且if语句取决于提交给页面的表单。修改并重做codeigniter中的最后一个查询

+0

重复的问题:http://stackoverflow.com/questions/8093370/restarting-active-query-in-codeigniter – Repox

+0

@Repox这两个问题涉及相关但不同的主题。我不认为这是你提到的问题的重复。 – yasar

+0

在任何情况下,这两个问题都显得非常相关。任何你没有回答你的答案的理由?在任何问题中? – Repox

回答

0

你,因为总页数的运行查询两次?如果是,请在SQL中检查SQL_CALC_FOUND_ROWSFOUND_ROWS()

$this->db->select("SQL_CALC_FOUND_ROwS id",false); 
$this->db->any_AR_function(....); 
$this->db->limit(...); 
$result = $this->db->get(); 

在这之后,你可以调用这个:

$this->db->select("FOUND_ROWS() as count",false); 
$count = $this->db->get(); 

我希望这是你想要的。

+0

这确实正是我想要的。我是否需要将表名称放入部分? – yasar

+0

在最近的调用中('FOUND_ROWS()as count')不需要。在第一个查询中('any_AR_function'),你应该。请参阅http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows – uzsolt

0

可以使用得到最后的查询:

$last_query = $this->db->last_query(); 

您可以修改此查询,然后执行:

$query = $this->db->query($modified_query); 
foreach($query->result() as $row) 
{ 

}