CakePHP:重命名类模型

时间:2015-11-20 02:08:22

标签: cakephp cakephp-2.1

我有一个类模型(在CakePHP 2.1.3中),如下所示:

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 log:

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

这个SQL显示我调用了#34; AS UserRegister"是错误的原因。 (确实必须是" AS MemberRegister")。

要解决上述问题,我可以选择2个选项:

  1. 将find方法中的代码更改为:

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

    1. 更改为:" AS MemberRegister"。
    2. 事实上,我不想使用第一个选项,因为我必须在一些控制器(其中调用方法getUserByID)中改变很多东西,我只想使用第二个选项。

      但我不知道如何设置" AS MemberRegister"在我的代码中,因为它接收了用我的类名自动修复的代码:我的类名是UserRegister然后SQL总是" AS UserRegister", 无法更改为" MemberRegister",对吧?

      我尝试添加代码:'别名' => ' MemberRegister',

      但它没有运行。

      请帮我解决,谢谢!

1 个答案:

答案 0 :(得分: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();
    }
}