PHP-MySQLi-Database-Class 使用数据表模型类时如何指定或选择连接?

这个插件:**ThingEngineer/PHP-MySQLi-Database-Class**

https://github.com/ThingEngineer/PHP-MySQLi-Database-Class/blob/master/dbObject.md

如果你有用过它,我想问下,如果想类似下面这种ORM风格使用数据表相处模型:

class user extends dbObject {
    protected $dbTable = "imuser";
    protected $primaryKey = "imid";
    
    //...
}

它是如何切换连接或指定数据连接。比如说可以类似laravel里的model里,指定连接配置:
protected $connection = 'datacenter';
但我研究了很久,没发现如何操作弄,唯一的办法就是不使用这种方式,改用传统的连接。请教各位大神。

回复
阅读 1.2k
1 个回答

看了一下源码,代码中有这么一段:

 public function addConnection($name, array $params)
    {
        $this->connectionsSettings[$name] = array();
        foreach (array('host', 'username', 'password', 'db', 'port', 'socket', 'charset') as $k) {
            $prm = isset($params[$k]) ? $params[$k] : null;
            if ($k == 'host') {
                if (is_object($prm))
                    $this->_mysqli[$name] = $prm;
                if (!is_string($prm))
                    $prm = null;
            }
            $this->connectionsSettings[$name][$k] = $prm;
        }
        return $this;
    }

上面这段是你需要添加的链接

  public function connection($name)
    {
        if (!isset($this->connectionsSettings[$name]))
            throw new Exception('Connection ' . $name . ' was not added.');
        $this->defConnectionName = $name;
        return $this;
    }

这段是你要 *protected $connection = 'datacenter';* 这种, 个人认为 你得写个构造方法, 一进来以后 判断配置 $connection 了没有 如果没有 就 调用 下面个方法:

try{
  $this->db->connection($this->connection); 
}catch(\Excepotion $e) {
$this->db->addConnection($this->connection,['host'=>'127.0.0.1','db'=>'?' ])  // 这里补全
$this->db->connection($this->connection); 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏