根据我的知识很长一段时间,我使用递归来控制我的模型关系。如果我在我的模型之间建立任何关系,它肯定会与paginate自动连接。控制我需要使用递归。默认情况下,其值为1
并且为contro;我必须将其用作-1
或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
中对其进行描述,但是当我在Debug Kit中检查它时,它显示了这一点。
以及从所有变量中获取数据。
我该怎么办?哪里我错了?
答案 0 :(得分:1)
如果我错了,你不需要相关模型的数据,请纠正我。 为此,您需要将contains属性设置为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'));
我希望这对你有用。感谢
答案 1 :(得分:0)
即使您的模型设置为可包含,您仍然可以将recursive
设置为false
以阻止获取相关数据。
样本模型:
<?php
class Article extends AppModel {
public $actsAs = array('Containable');
public $belongsTo = array('Category');
}
样本控制器:
<?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));
}
}