zoukankan      html  css  js  c++  java
  • Beego-i18n-ORM操作

    1.beego 支持多语言

    I18N = middleware.NewLocale("conf/i18n.conf", beego.AppConfig.String("language"))
    

    配置文件如下:

    
    {
      "E-mail Address": {
        "en": "E-mail Address",
        "zh": "邮箱地址",
        "vn": "อีเมล"
      },
      "Username": {
        "en": "Ussername",
        "zh": "用户名",
        "vn": "tên truy nhập"
      }
    }
    

    使用如下:

    I18N.Translate("username", "vn")
    

    2.mysql数据库初始化

    // 注册数据源,注册模型,创建表
    func init() {
    	// set default database
    	// 参数1        数据库的别名,用来在ORM中切换数据库使用
    	// 参数2        driverName
    	// 参数3        对应的链接字符串
    	// 参数4(可选)  设置最大空闲连接
    	// 参数5(可选)  设置最大数据库连接 (go >= 1.2)
    	orm.RegisterDataBase("default", "mysql", "root:root@/my_db?charset=utf8", 30,30)
    
    	// register model
    	orm.RegisterModel(new(User))
    	//orm.RegisterModelWithPrefix("prefix_", new(User))  //使用表名前缀
    
    	// auto create table 第一个参数:数据库别名,第二个参数:删除表后再创建,第三个参数:打印执行过程
    	orm.RunSyncdb("default", false, true) 
    }
    

    3.查询结构到struct & map

    // rows to struct
    res := new(Options)
    nums, err := o.Raw("SELECT name, value FROM options_table").RowsToStruct(res, "name", "value")
    
    //rows to map
    res := make(orm.Params)
    nums, err := o.Raw("SELECT name, value FROM options_table").RowsToMap(&res, "name", "value")
    
    var maps []orm.Params
    num, err = o.Raw("SELECT user_name FROM user WHERE status = ?", 1).Values(&maps)
    

    4.QueryBuilder使用

    // User 包装了下面的查询结果
    type User struct {
    	Name string
    	Age  int
    }
    var users []User
    
    // 获取 QueryBuilder 对象. 需要指定数据库驱动参数。
    // 第二个返回值是错误对象,在这里略过
    qb, _ := orm.NewQueryBuilder("mysql")
    
    // 构建查询对象
    qb.Select("user.name",
    	"profile.age").
    	From("user").
    	InnerJoin("profile").On("user.id_user = profile.fk_user").
    	Where("age > ?").
    	OrderBy("name").Desc().
    	Limit(10).Offset(0)
    
    // 导出SQL语句
    sql := qb.String()
    
    // 执行SQL语句
    o := orm.NewOrm()
    o.Raw(sql, 20).QueryRows(&users)
    

    5.关联删除

    on_delete
    设置对应的 rel 关系删除时,如何处理关系字段。
    cascade 级联删除(默认值)
    set_null 设置为 NULL,需要设置 null = true
    set_default 设置为默认值,需要设置 default 值
    do_nothing 什么也不做,忽略

    type User struct {
    	...
    	Profile *Profile `orm:"null;rel(one);on_delete(set_null)"` //设置为 NULL
    	...
    }
    

    相关链接

    https://www.kancloud.cn/hello123/beego/126109

  • 相关阅读:
    【leetcode】1415. The k-th Lexicographical String of All Happy Strings of Length n
    【leetcode】1413. Minimum Value to Get Positive Step by Step Sum
    【leetcode】1410. HTML Entity Parser
    【leetcode】1409. Queries on a Permutation With Key
    1, 2, and 4 symbols per clock中数据排列
    RGB转换成YCbCr
    RAW转换成RGB
    ROM的一种写法
    IP之ALTIOBUF仿真
    IP之ALTDDIO_in仿真
  • 原文地址:https://www.cnblogs.com/tomtellyou/p/12619382.html
Copyright © 2011-2022 走看看