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
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.
try using var $useTable = 'news'; in your model.. Hopefully your problem will solve.
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