2
我正在處理需要運行4或5數據庫查詢所有具有相同的基本條件的控制器。由於條件涉及大約十幾個if/else語句,因此我希望避免在模型中重複它或在可能的情況下重新運行5次。最好的方式來重用條件Codeigniter和活動記錄
有沒有一種智能的方式來重用模型函數中的WHERE子句來運行?
我正在處理需要運行4或5數據庫查詢所有具有相同的基本條件的控制器。由於條件涉及大約十幾個if/else語句,因此我希望避免在模型中重複它或在可能的情況下重新運行5次。最好的方式來重用條件Codeigniter和活動記錄
有沒有一種智能的方式來重用模型函數中的WHERE子句來運行?
使用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()
您可以發佈一些代碼以查看具體到底是什麼嗎? – fiunchinho 2011-05-22 22:14:12