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 に答える