Golang Gorm参考两列到同一表,插入问题
所以,我有这两个模型:
type AuthItem struct {
ID uint `gorm:"uniqueIndex;primaryKey;auto_increment;column:id" json:"id"`
Name string `gorm:"uniqueIndex;primaryKey;not null;type:varchar(64);column:name" json:"name"`
ItemType int64 `gorm:"type:smallint;not null;column:item_type" json:"item_type"`
Description string `gorm:"size:255;column:description" json:"description"`
}
type AuthRelations struct {
gorm.Model
Parent AuthItem `gorm:"references:id;foreignKey:parent;column:parent" json:"parent"`
Child AuthItem `gorm:"references:id;foreignKey:child;column:child" json:"child"`
}
我也已经在auth_items表中有一些数据,我想要用GORM插入auth_realations表中,它的外观是这样的:
var relation = models.AuthRelations{
Parent: models.AuthItem{ID: 1},
Child: models.AuthItem{ID: 2},
}
err = db.Save(&relation).Error
if err != nil {
log.Fatalf("cant insert: %v", err)
}
我遇到了此错误:
failed to set value 0x1 to field Parent; failed to set value 0x1 to field Parent
我尝试使用Gorm函数值(),类似:
func (item AuthItem) Value() (driver.Value, error) {
return int64(item.ID), nil
}
在实现此函数DB.Save之后,但约束/Exournovers/foreferaints/引用停止工作
,所以我的问题:是否有任何选择以正确的方式建立这种关系,或者我如何使用value()函数而不会失去约束?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该关系更接近
一对多
或多次
有一个父母可以拥有多个孩子,因为我们指的是与孩子相同的类型如下以下更新模型:
插入
authitem
可以通过自我参考 - has-any
我们不需要第二个表,并且可以将同一表与一个额外的列一起使用,作为参考,我们可以插入记录记录与以前一样
The relation is more near to
one-to-many
ormany-to-many
has one parent can have multiple children'sSince we are referring to the same type as children we can update the model as below:
AuthItem
can be inserted asSame can be achieved with
Self-Referential-Has-Many
where we don't require second table and can use the same table with one extra column as referencewe can insert record the same manner as we did before
我得出的结论是,我需要使用许多2频关系,这就是案例的示例:
i came to conclusion that i need to use many2many relation and here is example for case: