1

据我所知,很长一段时间以来,我一直在使用递归来控制我的模型关系。如果我在我的模型之间建立任何关系,它肯定会与分页自动连接。为了控制我需要使用递归。默认情况下,它的值是1和控制;我必须将其用作-1or 0。是的,我读到了Containable它如何自动控制从其他模型获取结果的行为,尽管建立了关系。

我经历了和写作一样的经历

public $actsAs = array('Containable'); 

在我的控制器中我写了

$this->Album->Behaviors->load('Containable', array('autoFields' => false, 'recursive'=>false));

但是我的默认分页也调用了来自其他模型的数据以及使用其他模型获取查询。

$this->paginate['Album'] = array('conditions' => $condition, 'limit' => '50', 'order' => array('Album.id' => 'DESC'));
$this->set('albums', $this->paginate('Album'));

根据我的期望数据,我的默认分页代码只能来自Album Model和从其他模型获取,我必须在其中描述它,Pagination但是当我在调试工具包中检查它时,它会显示这一点。

在此处输入图像描述

以及从所有变量中获取数据。 在此处输入图像描述

我应该怎么办 ??我哪里错了??

4

2 回答 2

1

你不想要相关模型的数据,如果我错了,请纠正我。为此,您需要将包含属性设置为 false。这只会带来相册模型的数据

$this->paginate['Album'] = array('conditions' => $condition,'contain' => false 'limit' => '50', 'order' => array('Album.id' => 'DESC'));
$this->set('albums', $this->paginate('Album'));

当您想在查询中附加多个模型时,包含将很有帮助,例如

$this->paginate['Album'] = array('conditions' => $condition,'contain' => array('model1','model2'), 'limit' => '50', 'order' => array('Album.id' => 'DESC'));

我希望这对你有用。谢谢

于 2013-06-18T19:31:48.880 回答
0

Even if your model is set to be containable, you can still set the recursive to false to prevent the fetching of associated data.

Sample model:

<?php
class Article extends AppModel {

    public $actsAs = array('Containable');
    public $belongsTo = array('Category');
}

Sample controller:

<?php
class ArticlesController extends AppController {

    public function index() {
        $this->Article->recursive = 0;
        $this->set('articles', $this->paginate('Article'));
    }

    public function view($id) {
        $this->Article->recursive = 0;
        $this->set('article', $this->Article->findById($id));
    }
}
于 2013-06-18T19:35:56.823 回答