2017-07-05 7 views
0

私はGoでREST APIを作成しています。そして、私は、要求に関して、オブジェクトに関するデータと、別のテーブルであるそれに関するいくつかのサブデータとの応答を送信したい。基本的にテーブル間でJOINを実行します。ozzo-dbxパッケージを使用してPostgreSQLで結合を行う方法は?

私はこのパッケージを使用しています:https://github.com/go-ozzo/ozzo-dbx

ドキュメントでは、JOINの例が見つかりませんでした。

これを解決する手助けをしてもらえますか?

マイコード:

これがないシンプルな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 
} 

私の構造体:

{ 
"id":12, 
"name":"Toyota", 
"rating":4, 
"price_value":4000, 
"users": { 
      "id":64, 
      "Username":"Tom32", 
      "Name":"Tom", 
      "Phone":"325345345", 
      "Email":"[email protected]" 
      } 
} 
:私は次の結果を SELECT * FROM cars INNER JOIN users ON cars.user_id = users.idを行い、取得したい。これにより

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"` 
} 

答えて

0

dbxパッケージのコードを少し掘り下げたところ、私はそれがかなり簡単だとわかりました:

err := rs.Tx().Select().InnerJoin("table2", dbx.NewExp("table2.id = table1.id").OrderBy("name").Offset(int64(offset)).Limit(int64(limit)).All(&bikes) 
関連する問題