2011-02-20 52 views
0

是否可以一次获取所有对象关系?Kohana立即获取所有关系

目前,我在视图中显示循环中的帖子评论($this->post->comments->find_all()),但它似乎并不是最好的主意(那么缓存呢?)。

你通常如何解决这个问题?

编辑 这是情况。当我展示最新帖子时(约15000个,每页25个),我得到了一个职位控制员。

在Post模型中,我建立了关系:has_many with comments,users,options。在同一个模型中,我将获得所有具有限制和偏移量的帖子(分页)。

在视图中我有一个foreach循环,我显示的帖子列表:

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

现在的问题是:如何添加缓存?

回答

1

这是我看到的正常用法。

如果你想利用缓存然后看看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); 
} 

刚一说明,该文件高速缓存驱动器自动序列数据和我假设其他司机做一些神奇的内部存储缓存对象。

+0

我编辑了我的问题,使其更加清晰。 – Shark

+0

我的答案正常。你有什么特别的麻烦? –

+0

我创建了一个扩展Kohana Cache模块的类。基本上完美的作品,但是当我在视图中调用'Cache :: process($ this-> post-> comments-> find_all() - > cached())'cache时,我已经看到查询已经完成。不知道为什么。任何建议? – Shark