簡體   English   中英

go-pg“屬於”同一表的2個字段

[英]go-pg “belongs to” 2 fields to same table

我正在使用https://github.com/go-pg/pg來處理這些內容,使基本的屬於關系的問題很大。

因此,基本上我有一個表,該表的列receipient_id和sender_id都指向同一用戶表。 這是我的代碼和結果:

type Transaction struct {
    Id              int
    Receipient      *User  `json:"receipient_id" sql:"-" validate:"required"`
    Sender          *User  `json:"sender_id" sql:"-" validate:"required"`
    TransactionType int    `json:"transaction_type" validate:"required"`
    Status          int    `json:"status" validate:"required"`
    Ammount         int    `json:"ammount" validate:"required"`
    CreatedAt       string `json:"created_at" validate:"required"`
}



err = database.DBCon.Model(&transactions).Select()
if err != nil {
    return transactions, err
}



16:51:15.754 V1TransactionListPOST ▶ ERRO 006 supppers [Transaction<id:1 receipient:<nil> sender:<nil> transaction_type:0 status:1 ammount:100 created_at:1533650239
]
2018/08/07 16:51:15 http: panic serving [::1]:50157: runtime error: invalid memory address or nil pointer dereference
goroutine 5 [running]:
net/http.(*conn).serve.func1(0xc42036fd60)
 ...

這是實際的數據庫:

SELECT * FROM transactions;
-[ RECORD 1 ]----+-----------
id               | 1
receipient_id    | 23
sender_id        | 24
transaction_type | 0
status           | 1
ammount          | 100
created_at       | 1533650239


SELECT * FROM users;
-[ RECORD 1 ]---------+-------------------------------------------------------------
id                    | 23
email                 | testss@gmail.com
username              | damn here
password              | $2a$10$ABBHfgwhnepqKitBoiQ2bOcPfGjUIjio33uL52R88Lk2XhcfGwn26
user_type             | 2
profile_id            | 1
status                | 2
confirm_token         |
recover_token         |
recover_token_expiry  |
recover_secret_answer | $2a$10$xPwZk2LanxXf1lvCvp29IuyHav88m5dGXo8Ao0f5A1aV1zwh5t6le
-[ RECORD 2 ]---------+-------------------------------------------------------------
id                    | 24
email                 | anotehrtsts@gmail.com
username              | removeusername
password              | $2a$10$1tmCvZy5xo5zGz9C3g6YeeV8Wb149VwSTFhT1pcjb0zVasT.fbTKy
user_type             | 2
profile_id            | 1
status                | 2
confirm_token         |
recover_token         |
recover_token_expiry  |
recover_secret_answer | $2a$10$CeS5qgITVGBgWX7cumhbdOoAPOhg/Lc2NXDu.nY5RzK3PGCW26Ik2

我忘記添加ID列,這是一個有效的示例:

type Transaction struct {
    Id              int
    RecipientId     int    `json:"recipient_id"`
    Recipient       *User  `pg:"fk:recipient_id"`
    SenderId        int    `json:"sender_id"`
    Sender          *User  `pg:"fk:sender_id"`
    TransactionType int    `json:"transaction_type" validate:"required"`
    Status          int    `json:"status" validate:"required"`
    Ammount         int    `json:"ammount" validate:"required"`
    CreatedAt       string `json:"created_at" validate:"required"`
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM