第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Gorm 預(yù)緊力 m2m 關(guān)系

Gorm 預(yù)緊力 m2m 關(guān)系

Go
繁華開滿天機 2022-09-05 17:34:15
我想預(yù)加載與gorm的關(guān)系,它沒有用函數(shù)填充切片。M2MPreload這是 sql 架構(gòu)create table project (  id int generated by default as identity,  name varchar(64) not null,  slug varchar(64) not null,  image_url text,  constraint project_pk primary key (id),  constraint project_unq unique (name, slug));create table donation (  id int generated by default as identity,  user_id varchar(36) not null,  total_amount numeric(7, 2) not null,  currency varchar(3) not null,  constraint donation_pk primary key (id));create table donation_detail (  donation_id int not null,  project_id int not null,  amount numeric(7, 2) not null,  primary key (donation_id, project_id));這些是我的血腥模型type Donation struct {    ID              uint64            `json:"id" gorm:"primarykey"`    UserID          string            `json:"user_id"`    PaypalOrderID   string            `json:"paypal_order_id"`    TotalAmount     float64           `json:"total_amount"`    Currency        string            `json:"currency"`    DonationDetails []*DonationDetail `json:"donation_details" gorm:"many2many:donation_detail;"`}type Project struct {    ID          uint64  `json:"id" gorm:"primarykey"`    Name        string  `json:"name"`    Slug        string  `json:"slug"`    ImageURL    string  `json:"image_url"`}type DonationDetail struct {    DonationID uint64  `json:"donation_id" gorm:"primaryKey"`    ProjectID  uint64  `json:"project_id" gorm:"primaryKey"`    Amount     float64 `json:"amount"`    Project    Project}我想退還捐款,它的詳細(xì)信息包括項目信息。像這樣:{  "id": 1,  "user_id": "e14a98d1-0c4a-45c3-b748-5ac6ba733b99",  "paypal_order_id": "6SR91505YA360210R",  "total_amount": 10000,  "currency": "EUR",  "donation_details": [    {      "donation_id": 1,      "project_id": 1,      "amount": 3000,      "project": {        "project_id": 1,        "name": "First Project",        "slug": "first_project",        "image_url": "img1.jpg"      }    },
查看完整描述

1 回答

?
阿波羅的戰(zhàn)車

TA貢獻1862條經(jīng)驗 獲得超6個贊

有幾件事需要嘗試和修復(fù):


您可能不需要該屬性來加載切片,因為它們只能使用 加載。如果您有外鍵,可以按如下方式添加它:many2manyDonationDetailDonationID


type Donation struct {

    ID              uint64            `json:"id" gorm:"primarykey"`

    UserID          string            `json:"user_id"`

    PaypalOrderID   string            `json:"paypal_order_id"`

    TotalAmount     float64           `json:"total_amount"`

    Currency        string            `json:"currency"`

    DonationDetails []*DonationDetail `json:"donation_details" gorm:"foreignKey:DonationID"`

您不需要該方法,因為已經(jīng)是一個指針。但是,要加載數(shù)據(jù),您還需要預(yù)加載。&dFirstdProject


func List(donationID string) (*Donation, error) {

  var d *Donation


  if err := db.Debug().Preload("DonationDetails.Project").First(d, donationID).Error; err != nil {

    return nil, fmt.Errorf("could not list donation details: %w", err)

  }


  return d, nil

}


查看完整回答
反對 回復(fù) 2022-09-05
  • 1 回答
  • 0 關(guān)注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號