Cakephp 3:loadModel函数如何定义全局?

时间:2015-10-08 07:04:06

标签: cakephp orm model cakephp-3.0

我是cakephp3的新手。我读了http://book.cakephp.org/3.0/并开始使用cakephp3开发小应用程序。 我正在使用UserMastersController,我想保存并从person_masters表中获取数据。为此我每次使用loadModel()或TabelRegistry :: get();每个函数中的方法。

$this->loadModel('PersonMasters');

那么,如何在cakephp3中定义全局其他模型,所以我不应该在每个函数中定义每次?

1 个答案:

答案 0 :(得分:1)

使用beforeFilter

  

我正在使用loadModel()或TabelRegistry :: get();每个函数中的方法。

最简单的解决方案是相关控制器中的define the beforeFilter method

public function beforeFilter(Event $event)
{
    $this->loadModel('PersonMasters');
    parent::beforeFilter($event);
}

public function example()
{
    $this->PersonMasters->find(); // no error
}

如果您愿意,可以改为更改默认表类的名称,is set automatically to the name of the controller class - if it isn't already set。这就是" FoosController的惯例将如何使用Foos表类"实施。即这也有效:

public function beforeFilter(Event $event)
{
    $this->modelClass = 'PersonMasters';
    parent::beforeFilter($event);
}

public function example()
{
    $this->PersonMasters->find(); // no error
}

虽然这对于未来的代码读者来说更为间接且可能更令人困惑(例如,明年,下周,或明天=))。