0

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

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');
 ....
 }
}
4

2 回答 2

3

CakePHP 从 v2.x 开始使用延迟加载,也就是说,如果您在数组中指定模型,$uses它只会在真正使用时加载,因此可以使用您的第一个代码段。

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

public function myaction() {
    $this->loadModel('ModelName');
    $this->ModelName->doSomething();
    ...
}
于 2012-09-02T12:28:13.340 回答
0

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

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

$foo = new YourModel();

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

$foo->myMethod()

代替:

$this->Model->myMethod();
于 2012-09-02T14:51:14.080 回答