代码之家  ›  专栏  ›  技术社区  ›  Gaurav Sharma

在cakephp v1.3中运行模型::find in for loop

  •  0
  • Gaurav Sharma  · 技术社区  · 16 年前

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

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

    换言之:
    主题属于类别,类别属于城市,城市属于国家。

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

    我该怎么做呢?

    我可以使用自定义查询($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 回复  |  直到 16 年前
        1
  •  1
  •   Rob Wilkerson    16 年前

    嗯,你可以做几件事:

    1. 设置 recursive 选项为3(由于您已经提到的原因,不推荐使用)。
    2. 使用 Containable 行为。我认为,我链接到的文档提供了一套相当可靠的使用说明。

    不幸的是,我说不出 可容纳的 分页行为。

        2
  •  1
  •   user13111984    16 年前

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

    推荐文章