2015-11-20 28 views
0

我有一個類模型(在CakePHP中2.1.3)時:CakePHP的錯誤:像下面改名類模型

App::uses('AppModel', 'Model'); 
class MemberRegister extends AppModel 
{ 
    public function getUserByID($userID) 
    { 
     try { 
      return $this->find('all', array(
       'fields' => array('MemberRegister.id', 'MemberRegister.first_name', 'MemberRegister.last_name'), 
       'conditions' => array('MemberRegister.id' => $userID), 
      )); 
     } catch (Exception $ex) { 
     $this->log($ex->getMessage(), LOG_ERROR); 
     } 
     return array(); 
    } 

    public $useTable = 'tbl_member'; 
} 

這個類是運行良好。

但現在我想重命名類爲UserRegister。它成爲:

App::uses('AppModel', 'Model'); 
class UserRegister extends AppModel 
{ 
    public function getUserByID($userID) 
    { 
     try { 
      return $this->find('all', array(
       'fields' => array('MemberRegister.id', 'MemberRegister.first_name', 'MemberRegister.last_name'), 
       'conditions' => array('MemberRegister.id' => $userID), 
      )); 
     } catch (Exception $ex) { 
     $this->log($ex->getMessage(), LOG_ERROR); 
     } 
     return array(); 
    } 

    public $useTable = 'tbl_member'; 
} 

當我打電話方法getUserByID,它有錯誤日誌:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'MemberRegister.id' in 'field list' 

和SQL日誌:

SELECT MemberRegister.id,MemberRegister.first_name,  MemberRegister.last_name FROM `tbl_member` AS `UserRegister` WHERE MemberRegister.id = 27 

顯示此SQL,我稱爲 「AS UserRegister」是錯誤的原因。 (確切必須是「AS會員註冊」)。在find方法

  1. 更改代碼:

    爲了解決上述問題,我可以有兩個選擇

    return $this->find('all', array(
         'fields' => array('UserRegister.id', 'UserRegister.first_name', 'UserRegister.last_name'), 
         'conditions' => array('UserRegister.id' => $userID), 
        )); 
    

馬上就好。

  1. 更改爲:「AS MemberRegister」。

事實上,我不希望使用第一種選擇,因爲我必須要改變一些控制器(其中調用方法getUserByID),我只是想用第二個選項太多的事情。

但我不知道如何在我的代碼中設置「AS MemberRegister」,因爲它會使用我的類名稱自動修復代碼:我的類名是UserRegister,SQL始終是「AS UserRegister」, 無法更改爲「會員註冊」,對嗎?

我嘗試添加代碼: '別名'=> 'MemberRegister',

,但它無法運行。

請幫我解決它,謝謝!

回答

1

可以使用$name財產如:

App::uses('AppModel', 'Model'); 
class UserRegister extends AppModel 
{ 
    public $name = 'MemberRegister'; 
    public $useTable = 'tbl_member'; 

    public function getUserByID($userID) 
    { 
     try { 
      return $this->find('all', array(
       'fields' => array('MemberRegister.id', 'MemberRegister.first_name', 'MemberRegister.last_name'), 
       'conditions' => array('MemberRegister.id' => $userID), 
      )); 
     } catch (Exception $ex) { 
     $this->log($ex->getMessage(), LOG_ERROR); 
     } 
     return array(); 
    } 
}