2011-02-20 92 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