Fatal error: Cannot redeclare class NewsModel

2019-05-28 12:29发布

the problem is a bit strange, I'm fighting with it since 2 days and before I post it as a bug just wanted to make sure this is not my mistake.

I have a clean CakePHP copy, I have a DB which is setup and Cake can connect to my DB with no problem. in my DB I have a table named "news", and I have a controller with the following code:

<?php

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

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

as long as I dont create the model file for my table, this query runs successfully, but as soon as I create the following Model file (save as News.php in model folder) I see the error that comes after code:

<?php

class NewsModel extends AppModel {
}

the error:

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

I'm on the windows and running php > 5.2.8

3条回答
小情绪 Triste *
2楼-- · 2019-05-28 12:38

Model should be singular to better fit cake convetions

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

}
?>

$news = $this->New->find('all');
查看更多
欢心
3楼-- · 2019-05-28 12:58

try using var $useTable = 'news'; in your model.. Hopefully your problem will solve.

查看更多
小情绪 Triste *
4楼-- · 2019-05-28 12:59

Well, the class should be "News", without the model part.

class News extends AppModel { }

The docs show examples everywhere. There may be confusion because the "News" Controller is called NewsController and the News Component, NewsComponent, but from the answer I got here, it's to avoid name collision (which gives you a do'h moment after you read it).

For future development, I find it easier just to bake the models/controllers/views and then delete what I don't need and change what I need changed.

查看更多
登录 后发表回答