Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. 通过不同的配置分组来实现。这需要在配置文件中配置不同的分组配置,随后在程序中可以通过g.DB("分组名称")来获取特定数据库的单例对象。
  2. 通过运行时DB.SetSchema方法切换单例对象的数据库,需要注意的是由于修改的是单例对象的数据库配置,因此影响是全局的:

    Code Block
    languagego
    g.DB().SetSchema("user-schema")
    
    g.DB().SetSchema("order-schema")


  3. 通过链式操作Schema方法创建Schema数据库对象,并通过该数据库对象创建模型对象并执行后续链式操作:


    Code Block
    languagego
    g.DB()
    db
    .Schema("user-schema").Model("user").All()
    
    db
    g.DB().Schema("order-schema").Model("order").All()


  4. 也可以通过链式操作Model.Schema方法设置当前链式操作对应的数据库,没有设置的情况下使用的是其DB或者TX默认连接的数据库:

    db
    Code Block
    languagego
    g.Model("user").Schema("user-schema").All()
    
    db
    g.Model("order").Schema("order-schema").All()


    Tip

    注意两种使用方式的差别,前一种方式来自于Schema对象创建Model对象后执行操作;后一种方式是通过修改当前Model对象操作的数据库名称达到切换数据库的目的。


  5. 此外,假如当前数据库操作配置的用户有权限,那么可以直接通过表名中带数据库名称实现跨域操作,甚至跨域关联查询:

    Code Block
    languagego
    // SELECT * FROM `order`.`order` o LEFT JOIN `user`.`user` u ON (o.uid=u.id) WHERE u.id=1 LIMIT 1
    
    db
    g.Model("order.order o").LeftJoin("user.user u", "o.uid=u.id").Where("u.id", 1).One()