2017-07-05 14:11



I am creating REST API in Go. And I want on request send the response with data about the object + some subdata about it which is another table. So basically do JOIN between tables.

I am using this package:

In the documentation, I failed to find JOIN examples.

Could you help me to solve this?

My code:

This does simple SELECT * FROM cars

func (dao *BikesDAO) Query(rs app.RequestScope, offset, limit int) ([]models.Bikes, error) {
bikes := []models.Bikes{}
err := rs.Tx().Select().OrderBy("name").Offset(int64(offset)).Limit(int64(limit)).All(&bikes)
return bikes, err

My structs:

type Bikes struct {
  Id                     int     `json:"id" db:"id"`
  Name                   string  `json:"name" db:"name"`
  Rating                 float64 `json:"rating" db:"rating"`
  PriceValue             uint    `json:"price_value" db:"price_value"`
  Users                  Users

type Users struct {
  Id             string  `json:"id" db:"id"`
  Username       string  `json:"username" db:"username"`
  Name           string  `json:"name" db:"name"`
  Phone          string  `json:"phone" db:"phone"`
  Email          string  `json:"email" db:"email"`

With this I want to do SELECT * FROM cars INNER JOIN users ON cars.user_id = and get the following result:

 "users": {
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答


  • duanlv5084 duanlv5084 4年前

    After some digging in dbx package code I have found that it's quite easy:

    err := rs.Tx().Select().InnerJoin("table2", dbx.NewExp(" =").OrderBy("name").Offset(int64(offset)).Limit(int64(limit)).All(&bikes)
    点赞 评论 复制链接分享