2

我最近将我的应用程序从 cake 1.3.x 升级到 cake 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()

4

3 回答 3

6

工作代码应该是

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

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

于 2012-11-13T06:13:03.227 回答
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;
}

Step2:像这样在控制器中调用上述方法:

$this->loadModel(ModelName);

我希望这能解决问题

于 2017-01-14T05:59:28.337 回答
-1

我想通过helper以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'];
}
于 2018-12-21T09:58:47.773 回答