同时查询多个库

在数据查询中已经说过,这边再单独说明方便查阅。 $this->db() 这边的db()方法,在配置文件章节中我们看到在normal.php中有配置项default_db这个配置,它是默认连接的数据库集群,如果我们的业务中有需要连接多个数据库集群呢? 这时只要在normal.php中添加相关的数据库配置项如
  1. 'default_db' => [
  2. 'driver' => 'MySql.Pdo', //数据库驱动
  3. 'master' => [
  4. 'host' => 'localhost', //数据库主机
  5. 'username' => 'root', //数据库用户名
  6. 'password' => '', //数据库密码
  7. 'dbname' => 'test', //数据库名
  8. 'charset' => 'utf8', //数据库编码
  9. 'tableprefix' => 'h_', //数据表前缀
  10. 'pconnect' => false, //是否开启数据库长连接
  11. 'engine' => ''//数据库引擎
  12. ],
  13. 'slaves' => [], //从库配置
  14. //查询数据缓存时间,表数据有变动会自动更新缓存。设置为0表示表数据没变动时缓存不过期。
  15. //这边设置为3600意思是即使表数据没变动也让缓存每30s失效一次,这样可以让缓存空间更合理的利用.
  16. //如果不想启用缓存直接配置为false
  17. 'cache_expire' => 30,//查询数据缓存时间
  18. ],
  19. 'game_db' => [
  20. 'driver' => 'MySql.Pdo', //数据库驱动 或者MongoDB.MongoDB使用MongoDB驱动
  21. 'master'=> [
  22. 'host' => 'localhost', //数据库主机
  23. 'username' => 'root', //数据库用户名
  24. 'password' =>'', //数据库密码
  25. 'dbname' => 'test', //数据库名
  26. 'charset' => 'utf8', //数据库编码
  27. 'tableprefix' => 'g_', //数据表前缀
  28. 'pconnect' => false, //是否开启数据库长连接
  29. 'engine'=>''//数据库引擎
  30. ],
  31. 'slaves'=> [],
  32. //查询数据缓存时间,表数据有变动会自动更新缓存。设置为0表示表数据没变动时缓存不过期。
  33. //这边设置为3600意思是即使表数据没变动也让缓存每30s失效一次,这样可以让缓存空间更合理的利用.
  34. //如果不想启用缓存直接配置为false
  35. 'cache_expire' => 30,
  36. ],

然后在写sql语句的时候直接 $this->db('game_db')即可,不写则为调用default_db配置的数据库集群。当然了如果数据库配置是从其它渠道过来的比如从db来的,也可在调用db()方法时直接传入数组


在声明Model文件的时候我们可以直接指定查询的db这样就不用每个操作都->db('xxx')

  1. class ApiLogModel extends Model
  2. {
  3. protected $db = 'game_db';//连接标识//默认为default_db
  4. protected $table = 'apilog';//表名,不带前缀
  5. protected $tablePrefix = 'pre_';//假设配置中的前缀不为pre_,这边单独配置表前缀
  6. }

我们在使用ApiLogModel::getInstance()->db() 时候默认调用的就是game_db

原文: http://doc.cmlphp.com/devintro/model/mysql/tong-shi-cha-xun-duo-ge-ku.html