2013-12-08 3 views
0

현재 새 프로젝트를 만들고 로그인 시스템을 만들고 있습니다. 어떤 이유로 그것은 역할 테이블을 찾는 것 같습니다? 이것은 지금까지 내 구조 :Database_Exception [1146] : 'database.roles'테이블이 존재하지 않습니다. [전체 롤을`roles`에서 표시]

컨트롤러

public function action_index() 
{ 
    //Check login 
    if (Auth::instance()->logged_in()): 
     HTTP::redirect('/', 302); 
    endif; 

    if (Request::current()->post()): 
     if(Auth::instance()->login($_POST['username'], $_POST['password'])): 
      echo Debug::vars($_POST); exit; 
     endif; 
    endif; 

    $view = View::factory('index/home'); 

    $index_page = $view->render(); 
    $this->response->body($index_page);   
} 

모델

class Model_User extends Model_Auth_User { 

protected $_table_name = "users"; 
protected $_primary_val = "user_id"; 

protected $_table_columns = array(
'user_id'  => array('type' => 'int'), 
'team_id'  => array('type' => 'int'), 
'username'  => array('type' => 'string'), 
'password'  => array('type' => 'string'), 
); 

내가 점점 오전 오류가

Database_Exception [ 1146 ]: Table 'database.roles' doesn't exist [ SHOW FULL COLUMNS FROM `roles` ] 

사람이 설명 할 수 있습니다 이유는을 찾고 있습니다 역할이라고 부르는 테이블? 데이터베이스의 테이블을 사용자라고합니다.

+0

무엇 낮은 오류 : ORM의 모듈 폴더에서

당신은 기본 인증에 사용되는 SQL 스키마를 찾을 수 있습니다. 모든 인증 모듈은 일부 데이터베이스 저장소에 의존해야하며, rdb는 redis로 mysql 또는 nosql입니다. 모듈 api 및 설명을 읽는 것이 좋습니다. – fayhot

답변

2

당신이 API browser에서 볼 수 있듯이, Model_Auth_User는 다음 has_many 관계가있다 :

"roles" => array(2) (
    "model" => string(4) "Role" 
    "through" => string(11) "roles_users" 
) 

오류가에서 (당신이 말한을 확장합니다 같은 클래스) 유래 곳입니다.

모듈/ORM/인증 스키마를 mysql.sql

CREATE TABLE IF NOT EXISTS `roles` (
    `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `name` varchar(32) NOT NULL, 
    `description` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `uniq_name` (`name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

INSERT INTO `roles` (`id`, `name`, `description`) VALUES(1, 'login', 'Login privileges, granted after account confirmation'); 
INSERT INTO `roles` (`id`, `name`, `description`) VALUES(2, 'admin', 'Administrative user, has access to everything.'); 

CREATE TABLE IF NOT EXISTS `roles_users` (
    `user_id` int(10) UNSIGNED NOT NULL, 
    `role_id` int(10) UNSIGNED NOT NULL, 
    PRIMARY KEY (`user_id`,`role_id`), 
    KEY `fk_role_id` (`role_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `email` varchar(254) NOT NULL, 
    `username` varchar(32) NOT NULL DEFAULT '', 
    `password` varchar(64) NOT NULL, 
    `logins` int(10) UNSIGNED NOT NULL DEFAULT '0', 
    `last_login` int(10) UNSIGNED, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `uniq_username` (`username`), 
    UNIQUE KEY `uniq_email` (`email`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE IF NOT EXISTS `user_tokens` (
    `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) UNSIGNED NOT NULL, 
    `user_agent` varchar(40) NOT NULL, 
    `token` varchar(40) NOT NULL, 
    `created` int(10) UNSIGNED NOT NULL, 
    `expires` int(10) UNSIGNED NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `uniq_token` (`token`), 
    KEY `fk_user_id` (`user_id`), 
    KEY `expires` (`expires`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

ALTER TABLE `roles_users` 
    ADD CONSTRAINT `roles_users_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, 
    ADD CONSTRAINT `roles_users_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE; 

ALTER TABLE `user_tokens` 
    ADD CONSTRAINT `user_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE; 
+0

이 파일에서 역할과 관련된 항목을 삭제했지만 여전히 동일한 오류가 발생 했습니까? – joshuahornby10

+0

왜? Kohana의 기본값은 – kero

+0

입니다. 따라서이 오류를 막을 수있는 유일한 방법은 필요한 테이블을 만드는 것입니다. – joshuahornby10