我在kohana框架中编写应用程序,我在用户登录方法中遇到问题 我使用包括auth,数据库和orm kohana模块。我注意到在登录方法中我的sqlite数据库执行了3个查询:
SELECT user.* FROM users AS user WHERE username = 'dejwid' LIMIT 1
SELECT role.* FROM roles AS role WHERE name = 'login' LIMIT 1
SELECT COUNT(*) AS records_found FROM WHERE user_id = '1' AND role_id IN ('1')
并且不幸的是,最后一个查询不是很好(我认为),因为缺少FROM之后的TABLENAME。这可能是我的模型中的问题所以我将粘贴我的模型代码:
APP_PATH / classes / model / user.php:
class Model_User extends ORM
{
protected $_table_name = 'users';
protected $_table_columns = array('user_id','email','username','password','logins','last_login');
protected $_primary_key = 'user_id';
protected $_has_many = array('roles'=>array());
public function unique_key($id = NULL){
if(!empty($id) && is_string($id) && !ctype_digit($id)){
return 'username';
}
return parent::unique_key($id);
}
}
APP_PATH / classes / model / role.php:
class Model_Role extends ORM
{
protected $_table_name = 'roles';
protected $_table_columns = array('id','name','description');
protected $_primary_key = 'id';
protected $_belongs_to = array(
'users'=>array(),
);
public function unique_key($id = NULL){
if(!empty($id) && is_string($id) && !ctype_digit($id)){
return 'name';
}
return parent::unique_key($id);
}
}
如果有帮助我想添加,我试图关注this tutorial
我的问题是:为什么上次查询中没有tablename
?
答案 0 :(得分:1)
protected $_has_many = array('roles'=>array('through' => 'roles_users'));
或任何表名而不是roles_users