Лучший способ повторно использовать там, где условия с Codeigniter и Active Record - PullRequest
2 голосов
/ 23 мая 2011

Я работаю на контроллере, которому нужно выполнить 4 или 5 запросов к базе данных, с одинаковыми базовыми условиями. Поскольку условия включают около дюжины операторов if / else, я бы хотел избежать дублирования его в модели или повторного запуска 5 раз, если это возможно.

Существует ли интеллектуальный способ повторного использования предложений WHERE из функции модели в функцию?

1 Ответ

5 голосов
/ 23 мая 2011

Использование CI Кэширование активной записи .

Пример (дословно со связанной страницы):

$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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...