Fatal error: Cannot redeclare class NewsModel

你。 提交于 2019-12-08 01:06:30

问题


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


回答1:


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.




回答2:


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




回答3:


Model should be singular to better fit cake convetions

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

}
?>

$news = $this->New->find('all');


来源:https://stackoverflow.com/questions/19404345/fatal-error-cannot-redeclare-class-newsmodel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!