在我的CakePHP2应用中的controller/index
动作中,我有
$this->Model-find('all',array( ... lots conditions and things... ));
然后,在controller/view
我有:
$this->Model-find('first',array( ... lots conditions and things... ));
这两项工作都很好,但我显然重复了一大块代码(即查找条件,字段列表等),只有两个区别在于我在做的第一个{{1在第二个我正在做find('all')
并提供id作为其中一个条件。
有没有办法可以将条件移动到模型中,然后在这些条件下运行不同类型的查找?
答案 0 :(得分:0)
是的,您可以将查询作为函数/方法移动到模型类中。见后模型的样本:
class Post extends AppModel {
public $name = 'Post';
public function getAll() {
return $this->find('all', array('limit' => 20, 'order' => 'Post.created DESC'));
}
}
并通过$ this->模型 - > getAll();
在您的控制器上调用它$this->Post->getAll();
您还可以在函数中添加参数。
答案 1 :(得分:0)
您可以在Youur模型中创建方法:
public function getConditions($id = null) {
return array( ... lots conditions and things... );
}
在此方法的某处,只测试(!empty($id))
是否返回正确的结果。 (你没有提供'条件和事物',所以我不能在这里写出确切的代码......
并在两个控制器操作中使用它:
$this->Model->find('first', $this->Model->getConditions()));
$this->Model->find('all', $this->Model->getConditions()));
答案 2 :(得分:0)
添加条件作为控制器的属性
class FoosController extends AppController{
public $conditions = array( ... lots conditions and things... )
public function index(){
$this-Foo->find('all', $this->conditions);
}
public function view(){
$this-Foo->find('first', $this->conditions);
}
}