Php 为什么会出现这样的错误-错误:在非对象Cake 2.0上调用成员函数find()

Php 为什么会出现这样的错误-错误:在非对象Cake 2.0上调用成员函数find(),php,cakephp,cakephp-2.0,fatal-error,Php,Cakephp,Cakephp 2.0,Fatal Error,为什么会出现这个错误 Fatal Error Error: Call to a member function find() on a non-object File: /home/mycake/public_html/app/Controller/TasksController.php Line: 7 我认为这与使用CAKE 2.0有关,但我认为控制器中的代码可能是CAKE 1.3?我做了一些研究,但我不知道如何将代码更改为CAKE 2.0。有人能帮忙吗 这是TasksController

为什么会出现这个错误

Fatal Error

Error: Call to a member function find() on a non-object
File: /home/mycake/public_html/app/Controller/TasksController.php
Line: 7
我认为这与使用CAKE 2.0有关,但我认为控制器中的代码可能是CAKE 1.3?我做了一些研究,但我不知道如何将代码更改为CAKE 2.0。有人能帮忙吗

这是TasksController.php页面

<?php
class TasksController extends AppController {
    public $name = 'tasks';
    public function index() {
        //THIS IS THE LINE 7
        $tasks = $this->Task->find('all');
        $this->set('tasks', $tasks);
    }
}

如果未设置特定控制器的属性
$uses
,则CakePHP会自动实例化相应的模型,因此这意味着您可能会意外地将
AppController
的属性
$uses
设置为
null
array()


因此,请检查是否将
AppController
中的
$uses
设置为空,或者仅在
TasksController
中,使用
public$uses=array('Task')覆盖该值

如果您的控制器被称为
TasksController
,则它将尝试自动实例化
任务
模型。您不需要手动指定它。CakePHP抛出错误的原因是您对名称进行了多元化处理(模型是单数的,因此
Task
not
Tasks
),并且使用驼峰大小写,这意味着它们以大写字母开头(
Task
not
Task
)。

您可以这样尝试索引:

class TasksController extends AppController{


    public function index(){

        $this->set('tasks', $this->Task->find('all'));
    }
如果出现以下错误:对非对象调用成员函数find(),则可以:

$this->loadModel('Task');

这意味着
Task
不是一个对象,根据
AppController
的不存在
Task
属性,我已经这样做了,但是现在它返回了这个错误
缺少数据库表错误:表任务™在datasource default中找不到模型任务的s。
这是我的任务。php页面代码
我也有一个名为tasks的db表,正如您所知:)那么:datasource是否正确配置为指向正确的数据库?抱歉,我如何正确配置它?目前文件夹
datasource
是空的,但是我已经将
database.php
正确地指向了数据库
tasks
,他指的是
database.php
中的数据源。与我们共享您的database.php,以便我们可以查看它。记住隐藏所有凭证。