我最近将我的应用从蛋糕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()
答案 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'];
}