2011-05-22 99 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()