提问人:kamil 提问时间:11/1/2023 更新时间:11/1/2023 访问量:40
类型接口如何与 GORM 配合使用?
How does the type interface work with GORM?
问:
我有一个名为:Invoice
type Invoice interface {
GetTransactions() ([]Transaction, error)
}
type DebitInvoice struct {
gorm.Model
ClientID uint `json:"client_id"`
Client Store `json:"client"`
Debt uint `json:"debt"` //REMAINING PAYMENT
}
func (d DebitInvoice) GetTransactions() ([]Transaction, error) {
// process
return transactions, nil
}
type CreditInvoice struct { //PEMBELIAN
gorm.Model
InvoiceCreditID string `json:"invoice_credit_id"`
StoreID uint `json:"store_id"`
Store Store `json:"store"`
Debt uint `json:"debt"` //REMAINING PAYMENT
}
func (c CreditInvoice) GetTransactions() ([]Transaction, error) {
// process
return transactions, nil
}
正如你所看到的,和 是因为它实现了 .DebitInvoice
CreditInvoice
Invoice
GetTransactions()([]Transactions, error)
我有这种模型(在结构中),我们使用接口作为字段之一Invoice
type Transaction struct {
gorm.Model
InventoryID uint `json:"inventory_id"`
Inventory Inventory `json:"inventory"`
InvoiceID uint `json:"invoice_id"`
InvoiceType string `json:"invoice_type"` //Credit/Debit (Out/In)
Invoice Invoice `json:"invoice"`
TotalPrice uint `json:"total_price"`
Discount uint `json:"discount"`
}
但是当我使用 GORM AutoMigrate 迁移它时。它不起作用,它显示并且没有创建表unsupported data type: program_akuntansi/models.Invoice
transactions
我对模型的期望是:Transaction
Invoice
字段将为各自的表创建新记录InvoiceType
字段是发票创建的表的名称InvoiceID
field 是表中记录的 IDInvoiceType
但这些都不起作用
所以回到我的问题,接口类型如何与 GORM 一起使用,我如何修复我的代码?
答: 暂无答案
评论
InvoiceType