【问题标题】:CakePHP - Using a different model in current modelCakePHP - 在当前模型中使用不同的模型
【发布时间】:2012-11-21 20:24:46
【问题描述】:

我在 CakePHP 的模型中创建了一个自定义验证函数。在阅读了类似的问题后,我了解到我可以使用ClassRegistry::init('Model'); 在我当前的模型中加载一个外国模型。但它并没有更多地说明语法以及之后如何实际使用它。这是我尝试过的,但是当我尝试打印数组以查看它是否包含正确的东西时,什么都没有“发生”。基本上我想提取用户数据以在我的验证中使用它。

class Booking extends AppModel {

    public $name = 'Booking';

    public $validate = array(
        'start_time' => array(
            'noOptionViolation' => array(
                'rule' => 'noOptionViolation',
                'allowEmpty' => false
            )
        ),
    );  

    public function noOptionViolation ($start_time) {

        $this->User = ClassRegistry::init('User');
        $allUsers = $this->User->find('all');
        print_r($allUsers);


    }

这是正确的语法吗?我可以像在控制器中一样使用 $this->User 的所有方法吗?

【问题讨论】:

  • 其实,有些事情正在发生。 $allUsers 包含预期的数据,就像在控制器中一样。因此,这似乎是一种将外部模型数据提取到当前模型中的简单方法。如果我可以访问所有正常的模型方法,它只会留下问题。可能是的。

标签: class cakephp model


【解决方案1】:

您可以按照这篇文章的详细说明使用导入: https://stackoverflow.com/a/13140816/1081396

App::import('Model', 'SystemSettings.SystemSetting');
$settings = new SystemSetting();
$mySettings = $settings->getSettings();

在你的例子中是这样的:

App::import('Model', 'Users.User');
$user = new User();
$allUsers = $user->find('all');
print_r($allUsers);

你最好在模型的开头使用import

【讨论】:

  • 感谢您的回答,如果我使用的是“我的示例模型”,那么您的语法会是什么样子?
【解决方案2】:

你也可以用它来加载模型

$this->loadModel('User');

并通过

访问所有功能
$this->User

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 2023-03-03
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2014-03-21
    • 2011-11-25
    相关资源
    最近更新 更多