2015-11-20 46 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(); 
    } 
}