2

この問題は少し奇妙です。私は 2 日前からこの問題と戦っていますが、バグとして投稿する前に、これが私の間違いではないことを確認したかっただけです。

クリーンな CakePHP のコピーがあり、DB がセットアップされており、Cake は問題なく DB に接続できます。私のDBには「ニュース」という名前のテーブルがあり、次のコードを持つコントローラーがあります。

<?php

class UsersController extends AppController {
    public $uses = array('News');

    public function news(){
        $news = $this->News->find('all');
        var_dump($news);
        die;
    }
}

テーブルのモデル ファイルを作成しない限り、このクエリは正常に実行されますが、次のモデル ファイル (モデル フォルダーに News.php として保存) を作成するとすぐに、コードの後に​​エラーが表示されます。

<?php

class NewsModel extends AppModel {
}

エラー:

Fatal error: Cannot redeclare class NewsModel in C:\...\cakephp\app\Model\News.php on line 4

私はWindows上でphp> 5.2.8を実行しています

4

3 に答える 3

6

さて、クラスはモデル部分なしで「ニュース」でなければなりません。

class News extends AppModel { }

ドキュメントはどこでも例を示しています。「ニュース」コントローラーが呼び出されNewsController、ニュースコンポーネントが呼び出されるため、混乱が生じる可能性がありますが、ここNewsComponentで得た回答から、名前の衝突を回避するためです (これにより、読んだ後に少し時間がかかります)。

将来の開発では、モデル/コントローラー/ビューを焼き付けてから、不要なものを削除し、必要なものを変更する方が簡単だと思います。

于 2013-10-16T13:17:14.310 に答える
-1

ケーキの慣例によりよく適合するように、モデルは特異でなければなりません

<?php
App::uses('AppModel', 'Model');
class New extends AppModel {

}
?>

$news = $this->New->find('all');
于 2013-10-16T15:33:00.123 に答える