绑定CakePHP中控制器操作内部的模型

时间:2012-09-02 09:29:08

标签: php cakephp cakephp-2.0 lazy-loading

通常我在这样的类中加载模型:

public $uses = array('Table1', 'Table2', 'Table3');

但是我的一些模型仅用于2-3个动作。所以我不想为其他动作加载该模型。所以我需要声明“table1”控制器范围。并在控制器内部需要时加载“table2”和“table3”。可能吗?我找不到里面的食谱。

这样的事情:

class myController extends Controller {
 public $uses = array('Table1');

 public function myaction() {
  $uses = array('Table2','Table3');
 ....
 }
}

2 个答案:

答案 0 :(得分:3)

CakePHP使用自v2.x以来的延迟加载,即如果你在$uses数组中指定一个模型,它只在真正使用时加载,所以使用你的第一个片段就可以了。

但如有必要,您还可以使用loadModel()方法在单个操作中加载模型:

public function myaction() {
    $this->loadModel('ModelName');
    $this->ModelName->doSomething();
    ...
}

答案 1 :(得分:0)

在任何控制器方法中,您可以在需要时导入模型:

App::Import('Model', 'YourModel');

$foo = new YourModel();

现在,您可以通过引用模型变量来调用方法,例如

$foo->myMethod()

而不是:

$this->Model->myMethod();