使用Kohana Auth时,将“用户”表的默认名称更改为“成员”

时间:2014-04-19 11:56:31

标签: php kohana

我的表数据库有一个名为' members'的表。而不是用户'。我使用以下代码

为members表创建了一个模型
class Model_Member extends Model_Auth_User  

在使用Auth模块时,以下代码引用了一个例外,表示用户'用户'不存在。我怎样才能找到桌子上的成员'而不是用户'。或者我应该在数据库中重命名我的表?

其他Auth表名称如下

  

' member_tokens',' roles_members'和'角色'

1 个答案:

答案 0 :(得分:0)

这不应该是一个大问题,只是覆盖$_has_many关系。

class Model_Member extends Model_Auth_User {

    /**
     * A user has many tokens and roles
     *
     * @var array Relationhips
     */
    protected $_has_many = array(
        'member_tokens' => array('model' => 'Member_Token'),
        'roles'       => array('model' => 'Role', 'through' => 'roles_members'),
    );

    public function create_member($values, $expected)
    {
        $extra_validation = Model_Member::get_password_validation($values)
            ->rule('password', 'not_empty');

        return $this->values($values, $expected)->create($extra_validation);
    }

    public function update_member($values, $expected = NULL)
    {
        if (empty($values['password']))
        {
            unset($values['password'], $values['password_confirm']);
        }

        // Validation for passwords
        $extra_validation = Model_Member::get_password_validation($values);

        return $this->values($values, $expected)->update($extra_validation);
    }
}

相应地创建模型Member_Token和表格roles_members(字段名称member_id而不是user_id)。

class Model_Member_Token extends Model_Auth_User_Token {

    // Relationships
    protected $_belongs_to = array(
        'member' => array('model' => 'Member'),
    );

    protected function create_token()
    {
        do
        {
            $token = sha1(uniqid(Text::random('alnum', 32), TRUE));
        }
        while (ORM::factory('Member_Token', array('token' => $token))->loaded());

        return $token;
    }
}

我做了测试上面的代码,它只是让你知道如何做到这一点。

如果您仍然收到异常,请发布异常消息。