一镊折、多表查詢的時(shí)候建議使用原生sql查詢,若使用beego提供的orm表定義的方法查詢,返回字段形式固定色查,對于有代碼強(qiáng)迫癥的小伙伴來說很別扭,請看下圖:
func GetGoodsList(form *GoodsListForm) (err *utils.ControllerError, list *[]orm.Params) {
var maps []orm.Params
var returnp *utils.ControllerError
o := orm.NewOrm()
qs := o.QueryTable(new(Goods)).RelatedSel()
var limit, offset int
var errd error
if form.Limit < 1 {
limit = 20
}
if form.Offset < 1 {
offset = 0
}
if len(form.GoodTypId) == 0 {
_, errd = qs.Limit(limit, offset).OrderBy("Look").Values(&maps, "name", "GoodType__TypeId", "GoodType__TypeName", "Look", "GoodsId", "Price", "Discount", "ImageUrl", "StoreInfo__Amount", "StoreInfo__Left")
} else {
_, errd = qs.Filter("GoodType__TypeId", form.GoodTypId).Limit(limit, offset).OrderBy("Look").Values(&maps, "name", "GoodType__TypeId", "GoodType__TypeName", "Look", "GoodsId", "Price", "Discount", "ImageUrl", "StoreInfo__Amount", "StoreInfo__Left")
}
if errd != nil {
returnp = utils.ErrDatabase
} else {
returnp = utils.Actionsuccess
}
return returnp, &maps
}
傳入?yún)?shù)返回
{
"code": 9000,
"data": [
{
"Discount": 7,
"GoodType__TypeId": "2018020209225223",
"GoodType__TypeName": "保險(xiǎn)推銷",
"GoodsId": "2018020209252238",
"ImageUrl": "",
"Look": 9,
"Name": "成人意外險(xiǎn)",
"Price": 90,
"StoreInfo__Amount": 350,
"StoreInfo__Left": 350
}
],
"message": "獲取信息成功"
}
返回字段都是大寫撞芍,且關(guān)聯(lián)表字段含有雙_秧了,對于這樣的格式我只能呵呵了
如果采用原生SQL查詢,請看一下代碼
func GetGoodsList1(form *GoodsListForm) (err *utils.ControllerError, list *[]orm.Params) {
var maps []orm.Params
var returnp *utils.ControllerError
var errd error
limit, offset := form.Limit, form.Offset
if limit < 1 {
limit = 20
}
if offset < 1 {
offset = 0
}
o := orm.NewOrm()
if len(form.GoodTypId) > 0 {
_, errd = o.Raw("SELECT T0.`name` `name`, T1.`type_id` `typeid`, T1.`type_name` `typename`, T0.`look` `look`, T0.`goods_id` `goodsid`, T0.`price` `price`, T0.`discount` `discount`, T0.`image_url` `imageurl`, T2.`amount` `amount`, T2.`left` `left` FROM `goods` T0 INNER JOIN `good_type` T1 ON T1.`id` = T0.`good_type_id` INNER JOIN `good_store` T2 ON T2.`id` = T0.`store_info_id` WHERE T1.`type_id` = ? ORDER BY T0.`look` ASC LIMIT ? OFFSET ?", form.GoodTypId, limit, offset).Values(&maps)
} else {
_, errd = o.Raw("SELECT T0.`name` `name`, T1.`type_id` `typeid`, T1.`type_name` `typeName`, T0.`look` `look`, T0.`goods_id` `goodsid`, T0.`price` `price`, T0.`discount` `discount`, T0.`image_url` `imageurl`, T2.`amount` `amount`, T2.`left` `left` FROM `goods` T0 INNER JOIN `good_type` T1 ON T1.`id` = T0.`good_type_id` INNER JOIN `good_store` T2 ON T2.`id` = T0.`store_info_id` ORDER BY T0.`look` ASC LIMIT ? OFFSET ?", limit, offset).Values(&maps)
}
if errd != nil {
returnp = utils.ErrDatabase
} else {
returnp = utils.Actionsuccess
}
return returnp, &maps
}
傳入?yún)?shù)返回
{
"code": 9000,
"data": [
{
"amount": "350",
"discount": "7",
"goodsid": "2018020209252238",
"imageurl": "",
"left": "350",
"look": "9",
"name": "成人意外險(xiǎn)",
"price": "90",
"typeid": "2018020209225223",
"typename": "保險(xiǎn)推銷"
}
],
"message": "獲取信息成功"
}
采用原生SQL可以隨意修改返回參數(shù)的名稱了勤庐,再也不用擔(dān)心有代碼強(qiáng)迫癥的伙伴BB了