2011-05-22 98 views
2

我正在处理需要运行4或5数据库查询所有具有相同的基本条件的控制器。由于条件涉及大约十几个if/else语句,因此我希望避免在模型中重复它或在可能的情况下重新运行5次。最好的方式来重用条件Codeigniter和活动记录

有没有一种智能的方式来重用模型函数中的WHERE子句来运行?

+1

您可以发布一些代码以查看具体到底是什么吗? – fiunchinho 2011-05-22 22:14:12

回答

5

使用CI的Active Record Caching

例(逐字从链接的页面):

$this->db->start_cache(); 
$this->db->select('field1'); 
$this->db->stop_cache(); 

$this->db->get('tablename'); 

//Generates: SELECT `field1` FROM (`tablename`) 

$this->db->select('field2'); 
$this->db->get('tablename'); 

//Generates: SELECT `field1`, `field2` FROM (`tablename`) 

$this->db->flush_cache(); 

$this->db->select('field2'); 
$this->db->get('tablename'); 

//Generates: SELECT `field2` FROM (`tablename`) 

WHERE条款可以“缓存”这种方式为好,所以这应该是你所需要的。如果必须的话,将一些缓存的AR调用移入一个函数中,只需在模型中需要它的每个其他函数的开头调用该函数即可。每次运行查询时,都会调用缓存的函数,直到您flush_cache()