2012-12-17 37 views
0

我在生產環境中上傳了CakePHP應用程序。它正在處理我和我朋友的本地主機。在生產我試圖訪問不同的控制器時,出現以下錯誤:CakePhp對象錯誤

錯誤:調用一個成員函數查找()一個非對象
文件:/app/Controller/GroupsController.php
線:10

<?php 
class GroupsController extends AppController { 

var $name = 'Groups'; 
var $displayField = 'name'; 
var $helpers = array('Paginator', 'Html', 'Form'); 

function index() { 
    $groups = $this->Group->find('all'); 
    $members = $this->Group->GroupMember->find('all', array('order' => array('GroupMember.date_checked DESC'))); //Line 10! 
    $owners = $this->Group->GroupContact->find('all', array('conditions' => array('GroupContact.owner' => 1))); 
    $this->set(compact('groups', 'members', 'owners')); 
} 

它看起來像無法讀取GroupMember作爲對象。

型號 - groupMember.php

<?php 
class GroupMember extends AppModel{ 
var $name = 'GroupMember'; 
var $belongsTo = array(
    'Group' => array(
     'className' => 'Group', 
     'foreignKey' => 'group_id' 
    ) 
); 
} 
?> 

型號 - group.php

<?php 
class Group extends AppModel{ 
var $name = 'Group'; 
var $hasMany = array(
    'GroupMember' => array(
     'className' => 'GroupMember', 
     'foreignKey' => 'id', 
    ) 
); 
} 
?> 

你可以看到在http://www.thesupergroupproject.com/groups

同樣錯誤 - 項目工作無論是在我的本地主機還是我朋友的本地主機上。什麼可能導致錯誤?

+0

首先,您的代碼鏈接已經被破壞 - 您不應該在SO上添加非永久鏈接到您的問題。無論如何,因爲你的代碼已經在兩個系統上測試過了,所以我會先確定你的生產系統不是問題。您的生產系統和其他兩臺機器與任何LAMP堆棧(Apache,Mysql和PHP)之間是否存在任何版本不匹配? – Daniel

+0

我在同一臺服務器上在Cake中部署了一個不同的項目,並且它之前工作正常。 – user197483

+0

同一版本的Cake?過去幾乎沒有什麼變化讓我這樣陷入困境。這是你的模型如何資本化?命名約定在1.3和2之間變化,如果它是2.0+應用程序,它們應該是'GroupMember.php'和'Group.php'。 – Daniel

回答

0

型號名稱應爲CamelCase。我懷疑你在windows或其他操作系統上,這是case insensitive,而你的產品是Li​​nux,這是case sensitive

另外,當使用2.x時,不需要模型中的$ name屬性,這是PHP4。 x支持已被刪除。

您與'foreignKey' => 'id'的關係似乎不正確,GroupMember應與group_id字段關聯。