我已将修复程序应用于DB_driver.php中的Codeigniter,以允许我通过将$this->db_select();
添加到function simple_query($sql)
而同时连接到2个数据库。使用CodeIgniter form_validation规则is_unique加载了多个数据库
然后我有一个加载我的两个数据库,一个MY_Controller.php和每个控制器我有扩展它:
class MY_Controller extends CI_Controller {
public function __construct() {
$this->db1 = $this->load->database('db1',TRUE);
$this->db2 = $this->load->database('db2',TRUE);
}
}
我的应用程序是一个后台管理面板到现有数据库。我宁愿不使用额外的表操作现有的数据库,而是我的管理面板需要的任何表将存储在另一个数据库中(db1是我的面板,db2是现有的数据库)。我的$active_group
在/config/database.php
中设置为db1。这种格式
表单验证:
$userRules = "trim|required|min_length[4]|max_length[25]|xss_clean|is_unique[users.username]";
$this->form_validation->set_rules('username', 'Username', $userRules);
,因为在这种情况下,我想查询DB1和用户表(我的管理面板数据库)的工作就好了。
但是,如果我想做DB2上的相同像这样的东西:
$useridRules = "trim|required|min_length[4]|max_length[25]|xss_clean|is_unique[login.userid]";
$this->form_validation->set_rules('userid', 'Username', $useridRules);
不起作用,因为它仍然试图查询DB1。返回一个错误信息:
Error Number: 1146
Table 'db1.login' doesn't exist
SELECT * FROM (`login`) WHERE `user_id` = 'asdfjkl' LIMIT 1
Filename: libraries/Form_validation.php
Line Number: 954
db1.login绝对不存在的,因为我需要查询DB2的登录表,所以预计错误,但不想要的。
我很想知道是否有人已经找到一种方法来使用is_unique验证规则来查询他们的第二个数据库或第一个取决于手头的实例,或者如果我需要使用回调编写函数(或者,如果你认为它会更好,就干脆把我的表到现有DB2与ci_table前缀他们
我曾想过这一点,但希望能有一种方法,我可以使用原生的东西,并没有写我自己。谢谢。 – Jguy 2015-01-09 19:59:07