恢复最后查询或reset时的Builder数据
此方法等同于在执行查询前先获取 $builder = $db->get_builder();
然后执行SQL完毕后把原先的builder重新设置 $db->set_builder($builder);
$db->from('mydb')->where('id', 1)->get()->as_array(); // 执行查询
$db->recovery_last_builder(); // 恢复
等同于下面代码,但明显上面代码更优雅
$db->from('mydb')->where('id', 1);
$builder = $db->get_builder(); // 在执行前获取builder设置
$db->get()->as_array(); // 执行查询
$db->set_builder($builder); // 将前面获取的builder重新复原
例子一
$count = $db->from('mydb')->where('id', 10, '>')->count_records();
// 在执行count_records()时,所有的builder数据将会被清空
echo $db->last_query(); // SELECT COUNT(1) AS `total_row_count` FROM `mydb` WHERE `id` > '10'
// 恢复builder
$db->recovery_last_builder();
$db->limit(20)->order_by('id', 'DESC')->get()->as_array();
echo $db->last_query(); // SELECT * FROM `mydb` WHERE `id` > '10' ORDER BY `id` DESC LIMIT 10
Database Module_Database_QueryBuilder::recovery_last_builder( )
Database
public function recovery_last_builder()
{
if ($this->_builder_bak)
{
$this->_builder = $this->_builder_bak;
}
return $this;
}