2013-10-02 35 views
0

爲什麼我得到這個錯誤?爲什麼我得到這個錯誤 - 錯誤:調用一個非對象的成員函數find() - Cake 2.0

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); 
    } 
} 

如果您需要任何更多的信息,請問,因爲我不知道怎麼回事,使之更切合得到答案:)

+0

它意思是「任務」不是一個對象,根據['api'](http://api.cakephp.org/2.3/class-AppController.html)沒有'AppController'的'Task'屬性 –

回答

0

的CakePHP如果未設置特定控制器的屬性$uses,則會自動實例化對應的模型,因此這意味着您可能會意外地將AppController的屬性$uses設置爲nullarray()

所以,檢查,如果你有你的AppController$uses空,或者簡單地說,在你的TasksController,覆蓋價值與public $uses = array('Task');

+0

我有這樣做,但現在它帶回這個錯誤'缺少數據庫表 錯誤:表'任務™的型號任務不是在數據源default.'發現,這是我Task.php頁面代碼'

+0

我確實有一個數據庫表,稱爲任務太多,所以你知道:) –

+0

所以:是否正確配置數據源指向正確的數據庫? – arilia

1

如果你的控制器被稱爲TasksController那麼它會嘗試自動實例化Task模型。您不需要手動指定它。 CakePHP拋出錯誤的原因是因爲您已將名稱複數化(模型單數,因此Task而非Tasks)並且也是駱駝式的,意思是它們以大寫字母(Task而不是task)開頭。

0

你可以嘗試這樣的指標:

class TasksController extends AppController{ 


    public function index(){ 

     $this->set('tasks', $this->Task->find('all')); 
    } 

如果你得到的錯誤:調用一個成員函數find()方法在非對象上,你可以把:

$this->loadModel('Task'); 
相關問題