2

最近、アプリをCake1.3.xからCake2.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

ヘルパーにモデルをロードし、ヘルパークラスに次のメソッドを追加することもできます。

ステップ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);

これで問題が解決することを願っています

于 2017-01-14T05:59:28.337 に答える
-1

ヘルパーを介してデータを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 に答える