我使用模块身份验证与ORM驱动程序和本机会话。
数据库配置'默认'和' customer_1'存在于application / config / database.php。
中在登录之前,我使用以下命令更改默认数据库配置
Kohana::$config->load('database')->default = Kohana::$config->load('database')->get('customer_1');
这在Module Auth登录之前有效!
设置默认数据库配置后:
if (Auth::instance()->login($_POST['username'], $_POST['password']) === TRUE) { Request::current()->redirect(); }
这会导致以下错误:
Table 'default_database.users' doesn't exist [ SHOW FULL COLUMNS FROM `users` ]
由于某种原因,它使用初始默认数据库配置。
我的问题:如何为Module Auth设置默认数据库?
答案 0 :(得分:1)
让我们稍微了解一下。
您实际上正在使用ORM / Auth,而不仅仅是Auth。 ORM / Auth中的ORM配置为使用默认数据库(如果未指定)。它允许您通过重载ORM.php文件中的$ _db_group来覆盖此选项。
让我们使用Kohana的级联文件系统来覆盖它。创建一个新文件:classes / auth.php。插入此代码:
<?php
class ORM extends Kohana_ORM {
$_db_group = Kohana::$config->load('database')->get('customer_1');
}
全部设定。
答案 1 :(得分:1)
如果您希望Auth模块使用与其他模型不同的数据库,则应使用Gaurav Patel建议的$_db_group
。但是,您应该只覆盖Auth ORM模型(user,role和user_token),而不是ORM
类:
APPATH /类/模型/ user.php的:
class Model_User extends Model_Auth_User
{
protected $_db_group = 'customer_1';
}
APPATH /类/模型/ role.php:
class Model_Role extends Model_Auth_Role
{
protected $_db_group = 'customer_1';
}
APPATH /类/模型/用户/ token.php:
class Model_User_Token extends Model_Auth_User_Token
{
protected $_db_group = 'customer_1';
}