0

私は CakePHP を初めて使用し、cake アプリケーションをカスタマイズしようとしています。

app/models フォルダーにモデル クラス ファイルを持たずにモデルを使用しているのを見てきました。

テーブルからモデルへの自動マッピングがあると思います

私はいくつかの便利なコード行を共有しています

    public $uses = array('LinkEmperorCampaignDetail','Configuration','Article');

        $this->paginate = array(
            'conditions' => $condition,
            'limit' => 10
        );

        $this->set('articles', $this->paginate('Article'));

$uses 変数を使用して Article モデルをインポートするのを見たように、データベースには "articles" テーブルがありますが、app/models には Article.php ファイルはありません。キャッシュ フォルダーを削除し、キャッシュを無効にしました。

テーブル「テスト」を作成し、このコードを使用して、自動かどうかを確認しました

  $test=$this->test->find('all');;
  var_dump($test);exit();

しかし、このエラーが発生します Error: Call to member function find() on a non-object

これがどのように起こっているか教えてください

ありがとう、ラジーシュ

4

2 に答える 2

1

次のように変更します。

 $test = $this->Test->find('all');

また、cakephp モデルとデータベースの規則を確認してください。

于 2013-07-18T18:32:48.923 に答える
0

モデル ファイルはオプションです

モデルファイルが見つからない場合、 Cake はAppModel インスタンスを使用します。

/app/Model に対応するファイルが見つからない場合、CakePHP は動的にモデル オブジェクトを作成します。

そのような参照は、モデルが変数で宣言されているthis->Articleためのインスタンスになりますが、モデル ファイルは存在しません。AppModel$uses

それは $this->RandomModel が機能するという意味ではありません

質問に見られるように、ランダムモデルを参照すると、単に次のエラーが発生します。

非オブジェクトでメンバー関数 find() を呼び出す

Testコントローラーは問題のコードからモデルについて何も知らないため、これは予想されることです。

オプションのモデル ファイル処理は、モデルが Controller クラス プロパティとして存在することを期待して、任意のモデルを参照できるという意味ではありません。$usesどのモデルについて知る必要があるかをコントローラーに伝える目的で存在します。モデルが特定の状況でのみ必要な場合は、この目的のためにloadModelが存在します。

$this->loadModel('Test');
$stuff = $this->Test->find('all');
于 2013-07-18T19:25:00.197 に答える