Php 科哈纳一次得到所有的关系

Php 科哈纳一次得到所有的关系,php,orm,kohana,Php,Orm,Kohana,是否有可能一次获得所有对象关系 目前,我正在视图中循环显示帖子注释($this->post->comments->find_all()),但这似乎不是最好的主意(那么缓存呢?) 你通常如何解决这个问题 编辑 情况是这样的。当我显示最新的帖子时,我得到了一个帖子控制器(大约15000篇,每页25篇) 在Post模型中,我建立了关系:与评论、用户和选项有很多联系。在同一个模型中,我得到了所有带有限制和偏移的帖子(用于分页) 在视图中,我有一个foreach循环,并显示posts列表: foreach

是否有可能一次获得所有对象关系

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

你通常如何解决这个问题

编辑 情况是这样的。当我显示最新的帖子时,我得到了一个帖子控制器(大约15000篇,每页25篇)

在Post模型中,我建立了关系:与评论、用户和选项有很多联系。在同一个模型中,我得到了所有带有限制和偏移的帖子(用于分页)

在视图中,我有一个foreach循环,并显示posts列表:

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

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

在我看来,这是正常的用法

如果您想使用缓存,请查看该函数。它不进行任何缓存,但返回一个可以序列化然后缓存的对象。其用途是:

$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);
}

请注意,文件缓存驱动程序会自动序列化数据,我假设其他驱动程序会在内部执行一些魔术来存储缓存对象。

我的答案很好。你有什么问题吗?我创建了一个扩展Kohana缓存模块的类。基本上工作得很好,但是当我在view
Cache::process($this->post->comments->find_all()->cached())中调用它时,
Cache已经创建,但是我可以看到查询正在进行。不知道为什么。有什么建议吗?