Kohana Get All отношения сразу - PullRequest
       15

Kohana Get All отношения сразу

0 голосов
/ 20 февраля 2011

Можно ли получить все объектные отношения одновременно?

В настоящее время я показываю комментарии к записи в цикле в представлении ($this->post->comments->find_all()), однако это не самая лучшая идея (а как насчет кэширования?).

Как вы обычно решаете это?

Редактировать Вот ситуация. У меня есть пост-контроллер, когда я отображаю последние сообщения (всего около 15000, 25 на страницу).

В модели Post я установил отношения: has_many с комментариями, пользователями, опциями. В той же модели я получаю все сообщения с лимитом и смещением (для нумерации страниц).

В представлении у меня есть цикл foreach, и я отображаю список сообщений:

foreach($posts as $post)
{
    /// here in the view I have another loop for comments and options
}

Теперь вопрос: как добавить кеш?

1 Ответ

1 голос
/ 20 февраля 2011

Это нормальное использование, как я вижу.

Если вы хотите использовать кэширование, взгляните на функцию cached () . Он не выполняет никакого кэширования, но возвращает объект, который можно сериализовать, а затем кэшировать. Использование будет:

$results = Cache::instance()->get('item');

if ( ! $results)
{
    $results = $this->post->comments->find_all()->cached();

    $six_hours = 21600;

    // Save to the cache
    Cache::instance()->set('item', $results, $six_hours);
}

foreach($results as $comment)
{
    var_dump($comment);
}

Просто обратите внимание, что драйвер файлового кэша автоматически сериализует данные, и я предполагаю, что другие драйверы делают внутреннюю магию для хранения кэшированного объекта.

...