在cakephp v1.3中运行Model :: find in for循环

时间:2010-05-27 05:49:24

标签: php cakephp find cakephp-1.3

如何在cakephp中实现以下结果:

在我的应用程序中,主题与类别相关,类别与城市相关,城市最终与州相关

换句话说:
主题属于类别,类别属于城市,城市属于国家..

现在在Topic控制器的索引操作中,我想找出所有主题,它是城市和州。

我该怎么办呢。

我可以使用自定义查询($ this-> Model-> query()函数)轻松完成此操作,但之后我将面临分页困难。

我试过这样做

function index()
{
    $this->Topic->recursive = 0;
    $topics = $this->paginate();
    for($i=0; $i<count($topics);$i++)
    {
        $topics[$i]['City'] = $this->Topic->Category->City->find('all', array('conditions' => array('City.id' => $topics[$i]['Category']['city_id'])));
    }
    $this->set(compact('topics'));
}

我采用的方法不是很好(在循环中运行查询)

使用递归属性并将其设置为最高值(2)会降低性能,并且不会产生状态信息。

我该如何解决这个问题?

请帮忙

由于

2 个答案:

答案 0 :(得分:1)

嗯,你可以做几件事:

  1. recursive选项设置为3(由于您已经提及的原因,不推荐使用此选项。)
  2. 使用Containable行为。我认为,我链接的文档提供了一套非常可靠的使用说明。
  3. 不幸的是,我无法谈论Containable行为对分页的影响。

答案 1 :(得分:1)

使用可包含行为时,无需设置递归级别。它将由cakephp自动调整。