通常我在这样的类中加载模型:
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');
....
}
}
答案 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();