如何在Helper中使用Model - CakePHP 2.x.

时间:2012-11-13 05:59:30

标签: cakephp cakephp-2.0

我最近将我的应用从蛋糕1.3.x升级到了蛋糕2.x.现在我有一个帮助器,它在某些功能中使用了模型。最初加载模型的语法是(适用于1.3.x)

     App::import('Model', $modelName);
     $modelObject = &ClassRegistry::getObject($modelName);    
     $modelObject->find()

现在我将其更改为以下

    App::uses($modelName,'Model');
    $modelObject = &ClassRegistry::getObject($modelName);
    $modelObject->find()

问题是,此转换无效。谁能告诉我我哪里做错了。提前感谢。

PS: 错误信息是:
在非对象上调用成员函数find()

3 个答案:

答案 0 :(得分:6)

工作代码应该是

//let $modelName be User  
App::import("Model", "User");  
$model = new User();  
$model->find("list");  

我希望这能帮助一些有需要的人

答案 1 :(得分:0)

你也可以在helper中加载模型,在helper类中添加以下方法:

步骤1:

public function loadModel($modelClass = null, $id = null) {
    if ($modelClass === null) {
        $modelClass = $this->modelClass;
    }

    $this->uses = ($this->uses) ? (array) $this->uses : array();
    if (!in_array($modelClass, $this->uses, true)) {
        $this->uses[] = $modelClass;
    }

    list($plugin, $modelClass) = pluginSplit($modelClass, true);

    $this->{$modelClass} = ClassRegistry::init(array(
                'class' => $plugin . $modelClass, 'alias' => $modelClass, 'id' => $id
    ));
    if (!$this->{$modelClass}) {
        throw new MissingModelException($modelClass);
    }
    return true;
}

步骤2:像在控制器中那样调用上面的方法:

$this->loadModel(ModelName);

我希望这可以解决问题

答案 2 :(得分:0)

我想通过助手查看foreach形式的数据

public function display()
{
    $links = TableRegistry::getTableLocator()->get('category');
    $category = $links->find('all')
        ->where(['status' => 1, 'position' => 0])
        ->select([
            "category" => 'parent', 'name'
        ])
        ->toArray();
    return $category['category'];
}